我根据该行特定列中的下拉菜单动态更改各个单元格的 CSS 样式。单元格改变颜色没有问题,但是当我转到下一行并做同样的事情时......上一行恢复到原始默认值并丢失应用的 css
"onCellChange" : function(e, args){
var fooCells = {};
if(args.cell == this.grid.getColumnIndex("test")){
if(args.item.test == 0 || args.item.test == 1 ){
if (!fooCells[args.row]) {
fooCells[args.row] = {};
}
fooCells[args.row][this.grid.getColumns()[this.grid.getColumnIndex("testNumber1")].id] = "slick-test-grayBoxes";
fooCells[args.row][this.grid.getColumns()[this.grid.getColumnIndex("testNumber2")].id] = "slick-test-grayBoxes";
this.grid.setCellCssStyles("grayBoxes", fooCells);
this.dataview.updateItem(args.item.id, args.item);
this.grid.invalidate();
}
if(args.item.test == 2 || args.item.test == 3 ){
if (!fooCells[args.row]) {
fooCells[args.row] = {};
}
fooCells[args.row][this.grid.getColumns()[this.grid.getColumnIndex("testNumber2")].id] = "slick-test-grayBoxes";
fooCells[args.row][this.grid.getColumns()[this.grid.getColumnIndex("testNumber3")].id] = "slick-test-grayBoxes";
this.grid.setCellCssStyles("grayBoxes", fooCells);
this.dataview.updateItem(args.item.id, args.item);
this.grid.invalidate();
}
}
this.grid.invalidateAllRows();
this.grid.render();
}
最佳答案
在函数的最后,当你调用 this.grid.invalidateAllRows();它会清除您应用的 css 样式。看起来您一次只执行一行 - 尝试 grid.invalidateRow();反而。您可能需要执行 grid.invalidateRow(args.item.ID);
关于javascript - Slickgrid onChange 不保留单元格 CSS 样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21912332/