2014-02-20 2 views
1

해당 행의 특정 열에서 드롭 다운에 따라 CSS 스타일을 개별 셀로 동적으로 변경하고 있습니다. 세포는 내가 다음 행으로 이동하여 같은 일을 할 때 .... 이전 행이 원래 기본으로 복귀하고이에Slickgrid onChange 셀 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

적용되었다는 CSS를 잃고, 색상에게 문제를 변경하지 함수의 끝, this.grid.invalidateAllRows(); 그것은 당신이 적용한 CSS 스타일을 닦아냅니다. 한 번에 하나의 행을 처리하는 것처럼 보입니다. grid.invalidateRow(); 대신. grid.invalidateRow (args.item.ID); 할 필요가 있습니다.

+0

지금 시도 중 ..... –

+0

Didnt는 작동하지 않습니다. –

+0

아, 죄송합니다. 현재 작업중인 행을 식별하는 데 args.item.ID가 필요하므로 this.grid.invalidateRow (args.item. 신분증); – larsAnders

관련 문제