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

问题描述 投票:0回答:1

我有一个简单的slickgrid表,有两个cols,name和value,其中value是可编辑的。现在我想突出显示所有更改的值。为此,我安装了一个onCellChange()处理程序,它将修改后的类添加到当前修改的单元格中。不幸的是,我的代码将类添加到当前编辑的单元格中,但将其从以前编辑的单元格中删除。

这是代码的一部分

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

jquery jquery-ui slickgrid
1个回答
1
投票

我从来没有使用过SlickGrid,但我认为问题出在你传递给keysetCellCssStyles(key, hash) 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,所以可能有一个更好的解决方案,但这个似乎工作;)

© www.soinside.com 2019 - 2024. All rights reserved.