2014-04-01 28 views
0

當編輯該列的單個單元格時,需要更改jqxgrid列中的所有單元格。所以,我依次通過的「cellvaluechanged」事件中的所有單元格:jqxGrid:取消綁定/綁定單元格值changed

var ri = -1; 
$("#jqxGrid").on('cellvaluechanged', function (event) { 
    if(ri != -1) return; 
    var column = args.datafield; 
    if(column == 'min'){ 
     var row = args.rowindex; 
     if(ri == -1)ri = row; 
      var griddata = $("#jqxGrid").jqxGrid('getdatainformation'); 
      var v = args.value;   
      for (var i = 0; i < griddata.rowscount; i++) { 
       if(i != row){ 
        $("#jqxGrid").jqxGrid('setcellvalue', i, 'min', v); 
       } 
      }   
     ri = -1;    
    } 
}); 

的問題是,它是大表過慢,因爲在循環呼叫單元的每個變化再次「oncellvaluechanged」功能。

什麼是這樣做的更優雅的方式?我正在考慮在循環之前解除「oncellvaluechanged」的綁定,並在最後綁定它,但我不知道該怎麼做。

感謝

回答

0

而不是要求你要修改的每個單元「setcellvalue」,它可能會更快,直接在DataAdapter的編輯值。你可以通過訪問dataAdapter的'records'參數來實現。

然後,你將需要強制你的jqxGrid刷新數據。你可以通過調用'render'或'refresh'來做到這一點。

看到那些鏈接,瞭解更多的相關信息:

http://www.jqwidgets.com/jquery-widgets-documentation/documentation/jqxdataadapter/jquery-data-adapter.htm

http://www.jqwidgets.com/jquery-widgets-documentation/documentation/jqxinput/jquery-input-api.htm