在 ExtJS 中,如何将自定义 CSS 类添加到数据网格行?

Posted

技术标签:

【中文标题】在 ExtJS 中,如何将自定义 CSS 类添加到数据网格行?【英文标题】:In ExtJS, how to add a custom CSS class to data grid rows? 【发布时间】:2011-11-30 01:37:15 【问题描述】:

如何将自定义 CSS 类添加到数据网格中的行 (Ext.grid.Panel)?

我正在使用 ExtJS 4.0。

【问题讨论】:

你也可以看看这个问题:***.com/questions/7471223/… 【参考方案1】:

如果你想在数据加载后改变类,你可以这样做:

myGridPanel.getView().removeRowCls(rowIndex,"old class");
myGridPanel.getView().addRowCls(rowIndex,"new class");

这里,rowIndex 是被选中的行,你可以在一些事件函数中得到它(比如“select”)。通过使用它,您可以在单击后更改行的 CSS。

【讨论】:

【参考方案2】:

方法是在网格上定义viewConfig

Ext.create('Ext.grid.Panel', 
    ...

    viewConfig: 
        getRowClass: function(record, index, rowParams, store) 
            return record.get('someattr') === 'somevalue') ? 'someclass' : '';
        
    ,

    ...
);

【讨论】:

参见文档:docs.sencha.com/extjs/4.2.2/#!/api/… 我想做同样的事情,但喜欢改变下拉菜单。就像我从下拉列表中选择与该条件相对应的东西一样,网格行类会发生变化,并且网格数据应该保持不变。只需根据组合框选择更改行类即可。【参考方案3】:

用最简单的方法

在您的网格中使用 -

cls: 'myRowClass'

你的 CSS -

.myRowClass .x-grid-cell background:#FF0000 !important;

【讨论】:

这绝对不是被问到的。【参考方案4】:

在您的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.ViewgetRowClass() 函数,该函数在渲染时调用以应用任何自定义类。然后您的自定义 css 文件将包含以下内容:

.myRowClass .x-grid-cell background:#FF0000;  

【讨论】:

这当然是推荐的做事方式,并且根据示例允许根据记录的值有条件地应用类,这是 getRowClass 覆盖的常见用途。 另外,我发现在网格的viewConfig 配置中定义getRowClass 很好,无需使用initComponent 的命令式方法:) 这不是推荐的方式,请使用viewConfig,看第一个答案。【参考方案5】:

你可以这样做:

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);
    
,

【讨论】:

以上是关于在 ExtJS 中,如何将自定义 CSS 类添加到数据网格行?的主要内容,如果未能解决你的问题,请参考以下文章

Django Allauth - 如何将自定义 CSS 类添加到字段?

将自定义组件添加到 EXTJS 图表

如何将自定义 CSS 添加到清晰的表单中?

如何将自定义css和js添加到angular 4

将自定义 CSS 部分添加到 Shopify 主题

将自定义类添加到 WordPress 导航中的锚标记