2011-07-05 4 views
2

jqgrid 3.8.2, 아래 코드를 사용하여 서버 쪽에서 데이터를 다시로드하고 현재 페이지와 같은 특정 페이지를 표시하려고합니다. $ ("# mygrid") .setGridParam ({datatype : json}). trigger ("reloadGrid", [{page : 5}]); 그리드가 서버에서 데이터를 올바르게로드 할 수 있지만 항상 5 페이지 대신 첫 페이지를 표시하십시오. 누구나 내게 그걸 줄 수 있습니까?jqgrid가 서버 쪽에서 데이터를 다시로드하는 동안 특정 페이지를로드 할 수 없습니다.

감사 사이먼

+0

서버 측 코드를 표시 할 수 있습니까? 어쨌든 jqGrid를 다시로드하려면 다음을 수행하십시오. $ ("# mygrid"). trigger ('reloadGrid', [{page : 5}]); – LeftyX

답변

11

난 당신이 loadonce: true 매개 변수를 사용한다고 가정. 서버에서 데이터를 다시로드하려면 datatype : 'json'(질문에서 코드 부분에있는 것처럼 setGridParam({datatype:'json'})을 사용하고 setGridParam({datatype:json})을 사용하지 않았 으면합니다.). 데이터가 서버 에서로드 된 후 로컬 데이터의 첫 번째 페이지가 표시됩니다.

문제를 해결하려면 loadComplete 안에 그리드를 한 번 더 다시로드해야하지만 이제 로컬 그리드를 다시로드해야합니다. 더 재로드 루프가없는 및 ​​현재 datatype인지 'JSON'을 확인해야 지역 페이징을 할 수 있도록 :

var myGrid = $("#mygrid"), currentPage = 1; 
... 
myGrid.jqGrid({ 
    // all grid parameters and additionally the following 
    loadComplete: function() { 
     if (this.p.datatype === 'json' && currentPage !== 1) { 
      setTimeout(function() { 
       myGrid.trigger("reloadGrid",[{page:currentPage}]); 
      }, 50); 
     } 
    } 
}); 
.... 
currentPage = 5; 
myGrid.setGridParam({datatype:'json'}).trigger("reloadGrid",[{page:currentPage}]); 

데모 here를 참조하십시오.

+0

감사합니다 올렉, 저를 위해 일합니다! – YunFeng

+0

@ YunFeng : 환영합니다! – Oleg

+0

나는 이것을 작동 시키려고 노력하고있다. 그러나 나는 loadonce를 사용하지 않고있다. 사용자가 처음 페이지에 올 때 현재 페이지를 설정하려고합니다. 내 서버에서 현재 페이지 인 "page"는 loadComplete처럼 그리드 매개 변수를 설정하더라도 항상 하나입니다. – Cody

관련 문제