【问题标题】:Color legend for grid panel in ExtJS4ExtJS4 中网格面板的颜色图例
【发布时间】:2012-07-30 20:01:40
【问题描述】:

我要求网格中的每个单元格都可以根据某些标准从可用的 8 种颜色中提取任何颜色。之后,我需要在网格面板下方显示这 8 种颜色的颜色图例及其标签名称。有人可以建议我 ExtJS4 是否有任何网格功能或关于如何解决这个问题的任何想法。

/** CSS 示例 */

.r1 .x-grid-cell-inner {
background-color: #f0f6ff;
color: #09d6ff;
border-left: 1px dotted rgba(2, 3, 3, 0.27);
border-right: 1px dotted rgba(2, 3, 3, 0.27);
}


.r2 .x-grid-cell-inner {
background-color: rgba(255, 183, 189, 0.22);
color: #900;
border-left: 1px dotted rgba(2, 3, 3, 0.27);
border-right: 1px dotted rgba(2, 3, 3, 0.27);
}


.r3 .x-grid-cell-inner {
background-color: #e2ffe2;
color: #090;
border-left: 1px dotted rgba(2, 3, 3, 0.27);
border-right: 1px dotted rgba(2, 3, 3, 0.27);
}


.r4 .x-grid-cell-inner {
background-color: rgba(255, 233, 228, 0.12);
color: #99890e;
border-left: 1px dotted rgba(2, 3, 3, 0.27);
border-right: 1px dotted rgba(2, 3, 3, 0.27);
}


.r5 .x-grid-cell-inner {
background-color: rgba(186, 242, 250, 0.10);
color: #1a4f99;
border-left: 1px dotted rgba(2, 3, 3, 0.27);
border-right: 1px dotted rgba(2, 3, 3, 0.27);
}


.r6 .x-grid-cell-inner {
background-color: rgba(255, 242, 239, 0.23);
color: #ff7f00;
border-left: 1px dotted rgba(2, 3, 3, 0.27);
border-right: 1px dotted rgba(2, 3, 3, 0.27);
}


.r7 .x-grid-cell-inner {
background-color: rgba(228, 224, 255, 0.7);
color: rgba(29, 7, 255, 0.60);
border-left: 1px dotted rgba(2, 3, 3, 0.27);
border-right: 1px dotted rgba(2, 3, 3, 0.27);
}


.r8 .x-grid-cell-inner {
background-color: rgba(255, 233, 228, 0.32);
color: rgba(255, 22, 12, 0.65);
border-left: 1px dotted rgba(2, 3, 3, 0.27);
border-right: 1px dotted rgba(2, 3, 3, 0.27);
}


.n1 .x-grid-cell-inner {
background-color: rgb(255, 255, 255);
color: rgb(255, 127, 0);
border-left: 1px dotted rgba(2, 3, 3, 0.27);
border-right: 1px dotted rgba(2, 3, 3, 0.27);
}

【问题讨论】:

    标签: css extjs grid extjs4


    【解决方案1】:

    我不得不做类似的事情。

    我使用列的renderer 配置根据值将“颜色”类应用于单元格。

    在我的例子中,值决定了单元格的颜色。

    这里是渲染器:

    // ... other column configs
    renderer: function(value, meta, record) {
        switch(value) {
    
            case 1 : 
                meta.tdCls = 'orange-cell';
                break;
    
            case 2 : 
                meta.tdCls = 'light-orange-cell';
                break;
    
            case 3 : 
                meta.tdCls = 'green-cell';
                break;   
        }
    
        // I only had a color in my cell without any kind of value
        // so didn't include the following return statement. I added it here
        // just so you would know that you can have it also.
        return value;
    }
    

    CSS 类如下所示:

    .orange-cell {
        background-color: #ffbb22 !important;
    }
    .light-orange-cell {
        background-color: #33cc55 !important;
    }
    .green-cell {
        background-color: #ffeecc !important;
    }
    

    这在 ExtJS 4.1.0 上运行良好

    【讨论】:

      【解决方案2】:

      在您的网格定义中添加类似的内容:

      viewConfig: {
        getRowClass: function(record, rowIndex, rowParams, store){
          return record.get("valid") ? "row-valid" : "row-error";
        }
      }
      

      更多详情请见http://docs.sencha.com/ext-js/4-0/#!/api/Ext.view.Table-method-getRowClass

      注意:这适用于单个行。你真的需要逐个细胞着色吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-01
        • 2011-12-05
        • 2021-08-14
        • 2011-08-30
        • 1970-01-01
        • 1970-01-01
        • 2012-03-29
        相关资源
        最近更新 更多