【发布时间】:2011-11-30 01:37:15
【问题描述】:
如何将自定义 CSS 类添加到数据网格中的行 (Ext.grid.Panel)?
我正在使用 ExtJS 4.0。
【问题讨论】:
-
你也可以看看这个问题:stackoverflow.com/questions/7471223/…
标签: javascript extjs datagrid extjs4
如何将自定义 CSS 类添加到数据网格中的行 (Ext.grid.Panel)?
我正在使用 ExtJS 4.0。
【问题讨论】:
标签: javascript extjs datagrid extjs4
如果你想在数据加载后改变类,你可以这样做:
myGridPanel.getView().removeRowCls(rowIndex,"old class");
myGridPanel.getView().addRowCls(rowIndex,"new class");
这里,rowIndex 是被选中的行,你可以在一些事件函数中得到它(比如“select”)。通过使用它,您可以在单击后更改行的 CSS。
【讨论】:
方法是在网格上定义viewConfig:
Ext.create('Ext.grid.Panel', {
...
viewConfig: {
getRowClass: function(record, index, rowParams, store) {
return record.get('someattr') === 'somevalue') ? 'someclass' : '';
}
},
...
});
【讨论】:
用最简单的方法
在您的网格中使用 -
cls: 'myRowClass'
你的 CSS -
.myRowClass .x-grid-cell {background:#FF0000 !important; }
【讨论】:
在您的initComponent() 或您的Ext.grid.Panel 中使用getRowClass(),如下所示:
initComponent: function(){
var me = this;
me.callParent(arguments);
me.getView().getRowClass = function(record, rowIndex, rowParams, store) {
if (/* some check here based on the input */) {
return 'myRowClass';
}
};
}
这基本上覆盖了底层Ext.grid.View 的getRowClass() 函数,该函数在渲染时调用以应用任何自定义类。然后您的自定义 css 文件将包含以下内容:
.myRowClass .x-grid-cell {background:#FF0000; }
【讨论】:
viewConfig 配置中定义getRowClass 很好,无需使用initComponent 的命令式方法:)
你可以这样做:
Ext.fly(myGrid.getView().getRow(0)).addClass('myClass');
当然,您可以将getRow() 调用替换为另一个单元格,或者您可以遍历所有行并适当地添加它。
然后,除了默认 CSS 之外,您还可以通过以下方式设置样式:
.x-grid3-row-selected .myClass {
background-color: blue !important;
}
还有一个私有方法GridView,称为addRowClass。您也可以使用它来为您的行添加一个类:
grid.getView().addRowClass(rowId, 'myClass');
// private - use getRowClass to apply custom row classes
addRowClass : function(rowId, cls) {
var row = this.getRow(rowId);
if (row) {
this.fly(row).addClass(cls);
}
},
【讨论】: