2013-02-15 2 views
0

검도 UI 그리드가있는 웹 응용 프로그램이 있습니다.검도 UI 그리드를 다시로드하면 행 항목 코드가 오류를 실행합니다.

$(document).on("click", "#grid tbody tr .ob-delete", function (e) { 
    var item = grid.dataItem($(this).closest("tr")); 
    var check = confirm("Do I delete:" + item.City); 
    if (check) { 
     grid.removeRow($(this).closest("tr")); 
    } 
}); 

버튼의 기기 구성 삭제 :

command: [ 
      "edit", { 
      name: "destroy", 
      text: "Remove", 
      className: "ob-delete" 
     }] 

나는를 다시로드 할 때 나는 버튼을 클릭하고 난 다음 코드 행을 제거 할 때 그리드는 Bakbone.js와 부하입니다 내용 (격자) 버튼을 누르면 행을 삭제하려는 경우 item.City에서 오류가 발생합니다.

완전한 예를 here

편집 : 는 here를 해결! @ Whizkid747 덕분에!

버튼이 함수가 호출을 클릭하면, 다음

command: [ "edit",{ 
     //... 
     click: deleteRow 
}] 

에 추가하려면 :

function deleteRow(e){ 
     var item = this.dataItem($(e.currentTarget).closest("tr")); 
     var check = confirm("Do I delete:" + item.City); 
     if (check) { 
      grid.removeRow($(e.currentTarget).closest("tr")); 
     } 
    } 

답변

1

확실하지,하지만 그리드는 실제로 이전과 동일한 그리드하지만 이전 (아니다 다시로드) 한 그리드와 두번째 그리드가 생성됩니다. 라인에 따라

변경 :

var item = $('#grid').data().kendoGrid.dataItem($(this).closest("tr")); 

updated version합니다.

그리드를 다시 작성하는 대신 dataSource.data() 메소드를 통해 데이터를 변경하는 것이 좋습니다. 또는 논리를 변경하여 실제로 다시 작성하기 전에 위젯을 다시 만들도록 destroy 위젯을 다시 만듭니다.

+0

해결 된 것처럼 보이지만 더 많은 콘텐츠를 추가하고 여러 번 확인을 반복합니다. 다른 버튼이있는 예제 [here] (http://jsfiddle.net/Lu9Qf/2/) – vicenrele

+1

격자 삭제 코드를 [여기] (http://stackoverflow.com/questions/14823072/)로 업데이트 할 수 있습니까? kendo-ui-grid-doesnt-work-on-mobile-device/14917592 # comment20939783_14917592). 아직도 작동하지 않는다면, 나는 그것을 살펴볼 것입니다. – Whizkid747