В ExtJS, как добавить пользовательский класс CSS в строки сетки данных?
Как добавить пользовательские классы CSS в строки в сетке данных (Ext.grid.Panel
)?
Я использую ExtJS 4.0.
5 ответов
способ сделать это-определить viewConfig
на сетке:
Ext.create('Ext.grid.Panel', {
...
viewConfig: {
getRowClass: function(record, index, rowParams, store) {
return record.get('someattr') === 'somevalue') ? 'someclass' : '';
}
},
...
});
в своем 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.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);
}
},
используйте самый простой способ
при использовании решетки -
cls:'myRowClass'
ваш css -
.myRowClass .x-grid-ячейка {фон:#FF0000 !важно; }
Если вы хотите изменить класс после загрузки данных, вы можете сделать это следующим образом:
myGridPanel.getView().removeRowCls(rowIndex,"old class");
myGridPanel.getView().addRowCls(rowIndex,"new class");
здесь rowIndex-выбранная строка, которую вы можете получить в некоторых функциях событий(например, "select"). Используя это, вы можете изменить CSS строки после нажатия на нее.