2012-12-07 2 views
2

페이지를로드 할 때 그리드에서 행을 선택하고 페이지를 전환하고 싶습니다. 그리고 $에서 (문서) .ready (함수()) 나는이 쓰기 :KendoUI Grid : jquery로 행 선택

$("#myGrid").data("kendoGrid").dataSource.page(17);

을 그리고 그것은 작동하고 : 그리드 페이지 (17)로 전환하지만 지금 그 후 나는 쓰기 :

$("#myGrid").data("kendoGrid").select($("#myGrid").data("kendoGrid").tbody.find('>tr').find('>td').filter(function() {return $(this).text() == "@Model.ActionId";}).parent('tr:first'));

그리고 작동하지 않습니다. 그러나 브라우저의 콘솔에서이 명령을 실행하면 행이 선택됩니다. 어떻게해야합니까?

+1

'serverPaging'을 사용하고 있습니까? 그렇다면 페이지 전환은 서버에서 새 데이터를로드하는 것을 의미하며 시간이 걸립니다. 'dataSource.page (17)'은 페이지 17의로드를 시작하는 것을 의미하지만 첫 번째 명령이 완료되면 두 번째 명령이 호출되지 않으면 성공하지 못합니다. – OnaBai

답변

4

아마도 그리드가 원격 서비스에 바인딩되어있을 것입니다. 이 경우 페이징은 즉시 발생하지 않습니다. 그리드의 데이터 소스는 원격 서비스에 비동기 요청을하고 응답이 수신되면 그리드가 리바운드됩니다.

작동하게하려면 응답을받은 후 선택 코드 을 호출해야합니다. 그리드의 dataBound 이벤트가 해당 코드를 호출하는 적절한 장소입니다. 다음은 그 예입니다 :

$("#myGrid").kendoGrid({ 
    /* other configuration */ 
    dataBound: function() { 
     this.select(this.tbody.find('>tr').find('>td').filter(function() {return $(this).text() == "@Model.ActionId";}).parent('tr:first')); 
    } 
});