slickgrid突出显示所有已编辑的单元格

时间:2014-02-25 12:43:46

标签: jquery jquery-ui slickgrid

我有一个带有两个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

1 个答案:

答案 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,所以可能有更好的解决方案,但这个似乎有用;)