0

我试图获得一些自定义 css 来在 ExtJS 中自定义我的网格。我在 cls 输入中苦苦挣扎,但后来我找到了另一种可行的方法。我想要的是突出显示有关值的整行这是我在 View 中的代码:

Ext.define('AM.view.user.List' ,{
extend: 'Ext.grid.Panel',
alias: 'widget.userlist',
title: 'Test ',
store: 'Users',

initComponent: function() {

this.columns = [
   {header: 'ID du CPE', width: 150, dataIndex: 'ID',  flex: 0},
       {header: 'Modèle', dataIndex: 'Modele', flex: 1},
   {header: 'Firmware', dataIndex: 'firmware', flex: 1},
   {header: 'Année MeS', dataIndex: 'annee', flex: 1},
   {header: 'Alerte', dataIndex: 'statut', hidden: true, hideable: false, flex: 0},
   {header: 'Etat', id:'CC', dataIndex: 'alerte', flex: 0, width: 100}

在 CSS 中有我的代码:

.x-grid-table .x-grid-row-selected  .x-grid-cell-CC {
background-color: #1DAE00 !important;  }  
.x-grid-table .x-grid-row-over .x-grid-cell-CC {
background-color: #1DAE00 !important;  }    

目前,它可以工作(id=CC 创建与 css 文件的链接)。当我将鼠标移过一条线或单击一条线时,“Etat”列中的相关值以绿色突出显示。我尝试了 cls 方法,但没有成功。主要原因,在我发现的所有教程中,经典的方法是:

Ext.create('Ext.grid.Panel', { 
cls: 'CC', 

但就我而言,我有:

Ext.define('AM.view.user.List' ,{
extend: 'Ext.grid.Panel',

而且我不知道在哪里放置 cls 属性。尝试了几种方法,但我总是以错误告终。

所以这是我的两个问题:1-如何突出显示整行(不仅是单列中的一行)2-如何自动突出显示与此行中包含的值有关的整行?

抱歉,如果不是很清楚:s。

4

2 回答 2

8

您需要getRowClass在网格的视图配置中提供一个方法。像这样:

    ,viewConfig: {
        getRowClass: function(record) {
            return record.get('highlight')
                ? 'highlight'
                : '';
        }
    }

这是一个关于如何在从网格面板扩展的类中执行此操作的完整示例:

Ext.define('My.Grid', {
    extend: 'Ext.grid.Panel'

    ,store: {
        fields: ['foo', 'bar', 'highlight']
        ,proxy: {
            type: 'memory'
            ,reader: 'array'
        }
        ,data: [[1, 'Bar', false],[2, 'Baz', false],[3, 'Bat', true]]
    }

    ,columns: [
        {dataIndex: 'foo', text: "Foo"}
        ,{dataIndex: 'bar', text: "Bar"}
        ,{dataIndex: 'highlight', text: "Highlighted"}
    ]

    ,viewConfig: {
        getRowClass: function(record) {
            return record.get('highlight')
                ? 'highlight'
                : '';
        }
    }
});

这将适用于以下 CSS 规则。请注意选择器捕获突出显示的行(.x-grid-row.highlight没有空格),以及背景应用于背景 TD 的事实,而不是直接应用于 TR 元素的事实,这是行不通的。

.x-grid-row.highlight .x-grid-td {
    background-color: palegreen;
}
于 2013-06-12T15:32:13.893 回答
0

感谢rixo,这是使它工作的代码!

viewConfig: {
getRowClass: function(record) {
    var red = record.get('statut') // shows if a CPE is dead or not (HS = Dead)
    if (red == 'HS') {
    return 'highlight'
    }
}
},
于 2013-06-13T08:19:51.037 回答