2014-11-27 6 views
0

최근에 데이터를 대량으로 가져오고 기존 행의 값을 설정하는 데 너무 오래 걸리는 문제가있었습니다. 일반적인 증상은 브라우저가 걸려 있고 "응답하지 않는 스크립트"경고입니다.KendoUI Grid - 대량 가져 오기/데이터 설정이 매우 느립니다.

여기

function import() { 
    var dataSource = $("#" + gridId).data("kendoGrid").dataSource;  
    var data = dataSource.data; 
    var importedData = null; // from somewhere..... 
    for(var i = 0; i < data.length; i++) { 
     data[i].set("column-name-0", importedData[i][0]); 
     data[i].set("column-name-1", importedData[i][1]); 
    } 
} 

어떻게 내가이 속도 저하 문제를 해결합니까 코드입니까?

답변

0

위에서 언급 한 "set"메서드는 사실 "ObservableObject"의 메서드입니다.이 메서드는 집합이 호출 될 때마다 차례로 그리드 새로 고침을 트리거한다는 것을 의미합니다. 위의 예제에서 각 셀 수정에 대해 눈금을 새로 고치는 것을 상상해보십시오.

해결 방법은 set 메서드를 사용하지 않고 모델 개체에 새 값을 직접 설정 한 다음 그리드 새로 고침을 트리거하는 것입니다. 아래를 참조하십시오. 그들이 설정 한 경우에 내가 열 또는 컬럼의 '템플릿'의 '형식'함께 플레이 할 필요가 없습니다

function import() { 
    var grid = $("#" + gridId); 
    var dataSource = grid.data("kendoGrid").dataSource;  
    var data = dataSource.data; 
    var importedData = null; // from somewhere..... 
    for(var i = 0; i < data.length; i++) { 
     data[i]["column-name-0"] = importedData[i][0]); // the value should be in correct datatype of the column 
     data[i]["column-name-1"] = importedData[i][1]); 
    } 
    grid.refresh(); 
} 

공지 사항. 그리드 새로 고침이 자동으로 처리됩니다.

그러나 가져온 데이터의 데이터 유형이 열의 데이터 유형과 일치하는지 확인하십시오. 그렇지 않으면 적용한 포맷터가 작동하지 않습니다.

희망이 도움이됩니다.