我有一个带有两个cols的简单slickgrid表, name 和 value ,其中 value 是可编辑的。 现在我想突出显示所有更改的值。为此,我安装了一个 onCellChange()处理程序,它将一个 modified 类添加到当前修改的单元格中。不幸的是,我的代码将类添加到当前编辑的单元格中,但是将其从以前编辑的单元格中删除。
这是代码的一部分
fieldView=new Slick.Data.DataView();
fieldView.setItems(rowData);
fieldView.reSort();
fieldGrid=new Slick.Grid(("#recordGrid"), fieldView, fieldColumns, editGridOptions);
fieldGrid.onCellChange.subscribe(function(e,args) {
var modifiedCells={};
modifiedCells[args.row] = {"value": "modified"};
this.setCellCssStyles("modified", modifiedCells);
});
如前所述,此代码仅将“已修改”类添加到上次编辑的单元格中,但将其从先前编辑的单元格中删除。如果我将 modifiedCells 设为全局,则只有第一个编辑过的单元格才能获得“修改”类。
我做错了什么? TIA
答案 0 :(得分:1)
我从未使用SlickGrid,但我认为问题出在您传递给setCellCssStyles(key, hash)
的key
arg上。如文档中所述:
key - 一个字符串键。将覆盖已与此密钥关联的任何数据。
setCellCssStyles(key, hash)
:通过调用removeCellCssStyles(key)
后跟addCellCssStyles(key, hash)
将CSS类设置为特定的网格单元格。 key是这组样式的名称,因此您可以稍后引用它 - 例如,修改它或删除它。 hash是要应用的CSS类的每行索引,每列名称嵌套哈希值。
由于key
始终相同,因此对removeCellCssStyles(key)
的调用会删除您之前的版本信息。您可以根据行和单元格索引使此key
唯一:
this.setCellCssStyles("modified." + args.row + "." + args.cell, modifiedCells);
如上所述我从未使用过SlickGrid,所以可能有更好的解决方案,但这个似乎有用;)