2014-04-01 3 views
0

해당 열의 단일 셀을 편집 할 때 jqxgrid 열의 모든 셀을 변경해야합니다. 그래서, "cellvaluechanged"이벤트의 모든 세포를 통해 I 루프 :jqxGrid : cellvaluechanged에서 바인드 해제/바인드

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의 'records'매개 변수에 액세스하여이를 수행 할 수 있습니다.

그런 다음 데이터를 새로 고치려면 jqxGrid를 강제 실행해야합니다. 'render'또는 'refresh'를 호출하여이를 수행 할 수 있습니다.

더 infos에 대한 해당 링크를 참조하십시오

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