我有一个从动态变化的数据加载的表 . 它每5秒刷新一次 . 我正在使用ag-grid使用此示例:https://www.ag-grid.com/javascript-grid-sorting/index.php
是否有可能改变其值有变化的单元格的颜色,例如假设单元格值为100并且变为(小于此值,即<100),因此使单元格变为红色,id变为更大,使其变为绿色 . 我正在尝试使用此示例:https://www.ag-grid.com/javascript-grid-cell-styling/index.php
但我无法理解如何做到这一点 .
更新:我这样做,但它没有改变颜色:
var columnDefs = [
{headerName: "Arr Px Slippage", field: "total_wt_arr_slp", width: 100, newValueHandler: compareValues},
{headerName: "IVWAP Slippage", field: "total_wt_ivwap_slp", width: 100}
];
function compareValues(params) {
if (params.oldValue > params.newValue){
return {color: 'green', backgroundColor: 'black'};
console.log(params.newValue);
}
if (params.oldValue < params.newValue){
return {color: 'red', backgroundColor: 'black'};
}
}
4 回答
你写的内容大多是正确的:
而且信息Jarod Moser给了你关于这个回调的params对象是重要的 .
您遇到的问题是您正在尝试
return {style}
但是您不能这样做 . 您需要访问html元素(包含<div>
)并在其上设置一个类(使用您想要的样式定义类) . 我已经在ag-grid中完成了这项工作,我可以访问params.eGridCell
但在此特定回调中,eGridCell不可用 . 如果我找到了一个很好的方法来到<div>
我将用我发现的内容编辑这篇文章 .EDIT - Additional Information
我不认为我会使用newValueHandler来做你想做的事情 .
您没有说明如何更新数据,但您确实说它可能每5秒更新一次 .
但是,您决定更新单元格,可以向rowData对象添加属性'origValue',在更新单元格值之前,将当前值设置为'origValue',然后将新值设置为value . 那么......您可以使用
cellClass
列属性,使用回调函数,并将新值与'origValue'进行比较并返回所需的样式 .文档中的示例:
cellClass的params对象可以访问行数据,并且能够比较new和orig值 .
一旦你开始挖掘,有很多选择 . 选择你认为最好的 .
看起来你应该能够使用newValueHandler这是每列的属性 .
来自文档:
所以有些东西:
其实我刚开始工作了 . 您需要在要更改颜色的每列上使用“cellClassRules”属性 . 就像是:
这里规则中的'x'是列的值 . 此外,您需要将列标记为voaltile:true .
要使volatile字段动态更改,在刷新数据时需要
api.softRefreshView()
.css类'bold-and-red'可以在你的html文件中定义,如:.bold-and-red {color:darkred; font-weight:bold; }
以下是代码片段,您可以在其中更改ag网格单元格文本和背景颜色的颜色 .