我正在动态地将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();
}
答案 0 :(得分:0)
在函数结束时,当你调用this.grid.invalidateAllRows();它正在消除你应用的css样式。看起来你一次只做一行 - 尝试grid.invalidateRow();代替。您可能需要执行grid.invalidateRow(args.item.ID);