- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有如下 Json 数据。
{'dropPickStatus':[{ 'description' : 'Open', 'status' : '1', 'color' : '#6699FF' } , { 'description' : 'Hold', 'status' : '2', 'color' : '#FF9900' } , { 'description' : 'Cancel', 'status' : '3', 'color' : '#FF0000' } , { 'description' : 'Parked', 'status' : '4', 'color' : '#C0C0C0' } , { 'description' : 'Arrived', 'status' : '5', 'color' : '#FFFF00' } , { 'description' : 'Started', 'status' : '6', 'color' : '#993300' } , { 'description' : 'Completed', 'status' : '7', 'color' : '#009900' } , { 'description' : 'Night Out', 'status' : '8', 'color' : '#FFFFFF' } ]}
我正在从 postgresql 数据库中检索这些数据。
var statusStore = new Ext.data.JsonStore({
fields : [ {
name : 'description'
}, {
name : 'status'
}, {
name : 'color'
} ],
root : 'dropPickStatus',
idProperty : 'status',
// autoDestroy : true,
autoLoad : true,
proxy : new Ext.data.HttpProxy({
url : "http://" + host + ":" + port + "/" + projectName + "/"
+ "DropPickStatus"
}),
reader : {
type : 'json',
root : 'dropPickStatus'
},
});
而且我还有带有八个标签的 extjs 字段集。
{
xtype : 'fieldset',
layout : 'hbox',
border : false,
frame : false,
defaults : {
layout : 'hbox',
labelAlign : 'top'
},
items : [ {
xtype : 'label',
forId : 'idOpen',
text : 'Open',
width : 53,
height : 25,
// textAlign: 'center',
style : {
background : 'blue',
color : 'black'
}
}, {
xtype : 'label',
text : 'Hold',
forId : 'idHold',
width : 53,
height : 25,
style : {
background : 'orange',
color : 'black'
}
}, {
xtype : 'label',
text : 'Cancel',
forId : 'idCancel',
width : 53,
height : 25,
style : {
background : 'red',
color : 'black'
}
}, {
xtype : 'label',
text : 'Parked',
forId : 'idParked',
width : 53,
height : 25,
style : {
background : 'gray',
color : 'black'
}
}, {
xtype : 'label',
forId : 'idArrived',
text : 'Arrived',
width : 53,
height : 25,
style : {
background : 'yellow',
color : 'black'
}
}, {
xtype : 'label',
text : 'Started',
forId : 'idStarted',
width : 53,
height : 25,
style : {
background : 'purple',
color : 'black'
}
}, {
xtype : 'label',
text : 'Completed',
forId : 'idCompleted',
width : 53,
height : 25,
style : {
background : 'green',
color : 'black'
}
}, {
xtype : 'label',
text : 'Night Out',
forId : 'idNight Out',
width : 53,
height : 25,
style : {
background : 'Brown',
color : 'black'
}
} ]
}
我想从我的 json 数据数组中设置标签文本和背景颜色。例如,对于我的第一个标签(打开),需要将#6699FF 设置为背景颜色并将“打开”设置为文本等等。
编辑代码:
listeners : {
load : function(me, records) {
Ext.each(records,
function(record) {
status = record.get('status');
if (status == '1') {
// lbOpen = Ext.getCmp('idOpen');
Ext.getCmp('idOpen').setText(record.get('description'));
alert(Ext.getCmp('idOpen').getEl());
} else if (status == '2') {
// lbHold = Ext.getCmp('idHold');
Ext.getCmp('idHold').setText(
record.get('description'));
} else if (status == '3') {
// lbCancel = Ext.getCmp('idCancel');
Ext.getCmp('idCancel').setText(
record.get('description'));
} else if (status == '4') {
// lbParked = Ext.getCmp('idParked');
Ext.getCmp('idParked').setText(
record.get('description'));
} else if (status == '5') {
// lbArrived = Ext.getCmp('idArrived');
Ext.getCmp('idArrived').setText(
record.get('description'));
} else if (status == '6') {
// lbStarted = Ext.getCmp('idStarted');
Ext.getCmp('idStarted').setText(
record.get('description'));
} else if (status == '7') {
// lbCompleted = Ext.getCmp('idCompleted');
Ext.getCmp('idCompleted').setText(
record.get('description'));
} else {
// lbNight = Ext.getCmp('idNightOut');
Ext.getCmp('idNightOut').setText(
record.get('description'));
}
// label.getEl().setStyle('background', record.get('color'));
});
}
}
这会正确设置所有标签文本。但是当我尝试使用 label.getEl().setStyle('background', record.get('color')); 设置背景颜色时我的 Firebug 控制台显示 getEl() 未定义
我应该怎么做?请帮帮我?
干杯
最佳答案
您需要为商店的 load
事件添加一个监听器。找到对应的标签,修改属性。这是一个例子
listeners: {
load: function (me, records) {
Ext.each(records, function (record) {
//find the corresponding label with Ext.getCmp(id) or
//container.getComponent(itemId)
label.getEl().setStyle('background', record.get('color'));
label.setText(record.get('description'));
});
}
}
我创建了一个简单的 fiddle 来演示对标签文本和样式属性的有效更改。你可以找到它here该示例是在 ExtJS 3.4 中模拟的。
关于javascript - ExtJs 3.4 : Set label text and background color from Json data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21217761/
我带着这么简单的问题来到这里,但找不到它......无论如何,你可以在下面看到代码。这是里面有项目的面板。我想要的是更改名称为“intIP”的文本字段的值,它位于面板内部,位于面板内部。我怎样才能做到
如何在 ExtJS 设计中显示面包屑功能。 我正在使用带边框布局的面板,我想在面板顶部设计面包屑功能 请寄给我一些 sample ..... 提前致谢 最佳答案 我想到了两个解决方案。 使用面板标题
你好 如何在 ExtJS 中设计嵌套网格 请提供一些示例(如何在 ExtJS GridPanel 中使用 RowExpander) 最佳答案 尝试这样的事情: //Create the Row Ex
我有类似的东西 Ext.define('HS.controller.Utility', { statics : { state : 'Oklahoma' } }); 现在我想
我有一列checkcolumn类型来启用切换 bool 值。我希望能够一次为该值切换所有行。理想情况下,我可以在checkcolumn header 中添加一个复选框,并监听更改。那可能吗? 我想指出
在我的 extjs 项目中,我有一些 panel我要展示的toolbar在 mouseEnter事件。这工作正常。但是当我用新的 html 更新面板时,mouseenter事件不起作用。 panel.
如何在 ExtJs Combo 中显示图标和显示字段。extjs 组合是否有任何扩展。请提供一些 sample 。 最佳答案 对于 ExtJS4,将带有 getInnerTpl 方法的 listCon
我有用于网格和柱状图的存储,但值是字符串形式的(服务器端格式化的数量,不能在客户端完成)。由于字符串格式的数量,网格没有被呈现。解决方案可能会使用网格和图表所需的数据类型制作单独的存储。但这是低效的方
我正在一个页面上有一个GridPanel的项目中工作。该面板可以显示任意数量的行,并且我设置了autoHeight属性,这将导致GridPanel扩展以适合行数。我现在想要一个水平滚动条,因为在某些分
我有一个网格,它允许用户通过编辑行来输入数字。我希望数字支持 4 位小数,但它只支持 2 位。我想出了如何显示 4 位小数,但它没有注册超过 2 位小数。 因此,如果用户输入 1000.1111,结果
我这里有以下网格: Ext.define('AM.view.user.List', { extend: 'Ext.grid.Panel', alias: 'widget.userlis
我正在将我的应用程序从ExtJs 3迁移到4版本。 我的formPanel上有几个组合框,以前我用过hiddenName 以及所有的stuff提交valueField而不是displayField。
我在一个面板中创建了多个项目。现在我想以“适合”布局显示此面板。我不想修复该面板的高度和宽度。我知道“适合”布局只允许显示一项。 这里可以使用“适合”布局吗?或者有什么替代方案可以实现这一目标吗? 谢
我需要将数据库值加载到组合框中。我不明白,为什么值没有加载到组合框中。通过 firebug,打印出 console.log 值。这是我的组合框代码, var groups = new Ext.data
这是将筛选器动态添加到gridpanel底部工具栏的正确语法吗? this.Grid.getBottomToolbar().plugins=[filters]; 当我这样做时没有错误。但是,它的行为并
我正在使用ExtJS v4.0。 在客户端和服务器端之间维护日期格式确实令人困惑。 用户需要自己的输入格式,但是服务器通常要求提交为一种标准格式。 它应该是ExtJS中的内置实现,但不是。 我已经阅读
我的问题对你来说很容易,但我负担不起..我从行中获取数据并显示在其他面板的字段中我的目标是编辑这些数据并在网格中显示编辑后的数据,请给我一些建议,我知道它需要 commit() 函数但是.. 我的代码
我是 ExtJS 的新手。我遵循了一个教程,目的是在网格上创建分页。代码很简单,我发现它很可疑......结果,分页工具栏在那里,但在第一次加载时仍然显示所有数据。这是我在 View 文件中的代码:
听说EXTJS是一个独立于浏览器的javascript库。 extjs 如何使自己独立于浏览器?当我打开库类时,我没有看到任何代码: 如果(IE)//这样做;else if (FF)//做其他事情;
我有一个类的实例(例如 Ext.data.Model)myRecord 并且需要调用它的静态方法之一(例如 getFields())。我该怎么做? 最佳答案 您还可以使用 self获取类的属性: my
我是一名优秀的程序员,十分优秀!