根据数据更改 cfgrid (html) 单元格颜色

发布于 2024-10-19 13:12:53 字数 251 浏览 6 评论 0原文

我想根据 cfgrid 中的状态条件更改单元格的颜色。

例如:

  1. 如果记录的状态为“逾期”,则单元格将变为红色,并以粗体显示“逾期”。
  2. 如果记录的状态为到期(30 天内),则单元格将变为黄色,并以粗体显示到期。
  3. 如果记录的状态为“当前”(到期日期超过 30 天),则单元格将为绿色,“当前”以粗体显示。...

我只能找到 cfgridrow 和 cfgridcolumn 的渲染。

I would like to change the color of a cell based upon a status condition in cfgrid.

For example:

  1. If the status of a record is Overdue, the cell will become red with OverDue in bold.
  2. If the status of a record is Due (within 30 days), the cell will become yellow with Due in bold.
  3. If the status of a record is Current (date due over 30 days), then the cell will be green with Current in bold....

I could only find rendering for cfgridrow and cfgridcolumn.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

冷清清 2024-10-26 13:12:53

您应该求助于 ExtJS 提供的列渲染器属性。列的渲染器获取三个参数,第二个是一个元对象,您可以在其上设置一个名为 attr 的属性,该属性被设置为 cell dom 元素上的属性。您可以为单元格提供一些 css 样式,例如:

var renderer = function(value, meta, record){
    if(value == "Overdue") { meta.attr = 'style="color:red;font-weight:bold"'; }
    if(value == "Due") { meta.attr = 'style="color:yellow;font-weight:bold"'; }
    if(value == "Current") { meta.attr = 'style="color:green"'; }
    return value;
}

检查 Ext.grid.ColumnModel 文档

You should resort to the column renderer property provided by ExtJS. A renderer for a column gets three arguments, the second is a meta object on which you can set a property called attr which gets set as attribute on the cell dom element. You can provide some css styling for the cell for example:

var renderer = function(value, meta, record){
    if(value == "Overdue") { meta.attr = 'style="color:red;font-weight:bold"'; }
    if(value == "Due") { meta.attr = 'style="color:yellow;font-weight:bold"'; }
    if(value == "Current") { meta.attr = 'style="color:green"'; }
    return value;
}

Check setRenderer in the Ext.grid.ColumnModel documentation

不喜欢何必死缠烂打 2024-10-26 13:12:53

我使用类似于您需要网格中的列来显示到期日期的东西:

{
 header:    'Expiration Date',    
 dataIndex: 'ExpireDate',
 renderer:  function (value, metaData, record, rowIndex, colIndex, store) {

     if ( record.get ( 'ExpireDate' ) < new Date ( ).clearTime ( ) ) {
       metaData.css += ' y-grid3-expired-cell';
       value = '';    
     }
     if ( record.get ( 'ExpireDate' ).format ('m/d/Y') == '12/31/9999' ) {
       metaData.css += ' y-grid3-non-expired-cell';
       value = '';
     }        
     value = (value == '') ? '' : record.get ('ExpireDate').format ('m/d/Y');
   }      
   return value;    
 }

},

使用CSS类是更强大的解决方案,我的类是这样定义的:

.y-grid3-expired-cell {
  background:         #AA0000;
} 

.y-grid3-non-expired-cell {
 background:         #00AA00;
}

您只需添加自己的逻辑和样式...

I use something similar to your need for column in grid to display expiration date:

{
 header:    'Expiration Date',    
 dataIndex: 'ExpireDate',
 renderer:  function (value, metaData, record, rowIndex, colIndex, store) {

     if ( record.get ( 'ExpireDate' ) < new Date ( ).clearTime ( ) ) {
       metaData.css += ' y-grid3-expired-cell';
       value = '';    
     }
     if ( record.get ( 'ExpireDate' ).format ('m/d/Y') == '12/31/9999' ) {
       metaData.css += ' y-grid3-non-expired-cell';
       value = '';
     }        
     value = (value == '') ? '' : record.get ('ExpireDate').format ('m/d/Y');
   }      
   return value;    
 }

},

using css classes is more robust solution, my clases are defined like this:

.y-grid3-expired-cell {
  background:         #AA0000;
} 

.y-grid3-non-expired-cell {
 background:         #00AA00;
}

only what you need to do is add your own logic and styles...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文