Slickgrid onChange不保留单元格CSS样式

时间:2014-02-20 15:32:43

标签: javascript slickgrid

我正在动态地将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();
}

1 个答案:

答案 0 :(得分:0)

在函数结束时,当你调用this.grid.invalidateAllRows();它正在消除你应用的css样式。看起来你一次只做一行 - 尝试grid.invalidateRow();代替。您可能需要执行grid.invalidateRow(args.item.ID);