2014-09-08 2 views
0

Kendo 그리드가 렌더링 된 후 (예 : 표시/숨기기 등) 몇 가지 사항을 변경하고 싶습니다. 그러나 검도 그리드는 어떤 onRendered 이벤트도 제공하지 않습니다. 그러면 어떻게해야합니까?검도 그리드가 렌더링되었음을 나타내는 이벤트가 있습니까?

이전에이 작업을 수행하기 위해 dataBound 이벤트를 사용했습니다. 데이터가 AJAX 요청에 의해 도착할 때까지 이미 그리드가 렌더링 되었기 때문에 실제로 작업하는 것이 었습니다. 그러나 사용 사례가 변경되었습니다. 그리드가 선언 될 때 데이터를 사용할 수 있습니다. 그래서 dataBound 이벤트 안에있는 코드는 그리드를 찾지 못하고 있습니다. if (grid)는 항상 false를 돌려 아래의 코드에서 :

$('#mygrid').kendoGrid({ 

    dataSource: { 
     data: myGridData 
    }, 

    dataBound: function() { 
     // Check if the grid has been rendered 
     var grid = $('#mygrid').data('kendoGrid'); 
     if (grid) { 
      // Show/hide columns 
      ... 
     } 
    }, 

    ... 
}); 

나는 또한 kendoGrid() 호출 후 확인을 이동하려고하지만 여전히 작동하지 않습니다. 호출 직후 그리드가 렌더링되지 않았습니다.

$('#mygrid').kendoGrid({ 

    dataSource: { 
     data: myGridData 
    }, 

    ... 
}); 

// Check if the grid has been rendered 
var grid = $('#mygrid').data('kendoGrid'); 
if (grid) { 
    // Show/hide columns 
    ... 
} 

체크를하기 전에 setTimeout()을 사용할 수 있지만 해킹처럼 느껴집니다! 다른 방법이 있습니까? 검도 그리드에서 onRendered과 같은 이벤트를 소개 할 수 있습니까? 나는 그것이 이것이이 문제를 해결할 올바른 방법이라고 생각합니다.

미리 감사드립니다.

+0

Dojo에서 제대로 작동하는 것 같습니다. http://dojo.telerik.com/aLUXA – CodingWithSpike

+0

@CodingWithSpike, 예제를 이용해 주셔서 감사합니다. 그것은 databound가 작동해야 함을 나타냅니다. 불행히도, 나는 이것을 내 코드에서 복제 할 수 없다. databound 함수에 중단 점을 넣으려고했는데 $ ('# mygrid')가 있지만 $ ('# mygrid') 데이터 ('kendoGrid')는 없습니다. 아직도 무슨 일이 일어나고 있는지 알아 내려고 노력 중입니다. 어떤 아이디어? – Naresh

+0

이벤트 처리기로 전달 된 매개 변수를 사용하여 그리드 위젯으로 돌아갈 수도 있습니다. 다음과 같이 시도하십시오 :'dataBound : function (dataBoundEvent) {var gridWidget = dataBoundEvent.sender; }'또는 그 이벤트 객체의 다른 것? – CodingWithSpike

답변

0

마침내 알아 냈습니다! 이것은 검도 UI에 전혀 문제가되지 않았습니다. 그것은 마리오 네트 프레임 워크의 버그였습니다. # ('# mygrid') 데이터 ('kendoGrid')를 수행하려고 할 때 #mygrid가 DOM에 연결되지 않았고 렌더링이 off-dom으로 수행되었습니다. 당연히 선택자는 아무 것도 반환하지 않았습니다! 그래서 Marionette과 Kendo 그리드에 대한 해결 방법을 시작했습니다.

관련 문제