2013-09-16 2 views
0

안녕 검도 격자 템플릿 열을 사용하여 함수에 detailRow 참조를 전달할 수있는 방법이 있습니까?검도 격자 템플릿 함수에서 상세 격자 참조 전달

여기가 내 흔적입니다. (-, 행 UID를 가지고 사전이 될 수 또는 키의 일종) 다음 방법을

function detailInit(e) { 
      detailRow = e.detailRow; 
      detailRow.find("#mygrid").kendoGrid({ 
        dataSource: { 
         data: empModel, 
        }, 
        columns: [ 
        { 
         field: "empId", 
         title: "Emp ID", 
         template: '<a href="\\#" onclick="showEmpDetails(\'#= detailRow #\')">  } 
          ] 
       }); 
       }); 

답변

0

시도는 전 세계적으로 위치 배열에 detailInit에서 검색 모든 detailRow을 배치 한 다음 클릭 방법이 인덱스를 통과 전달한 ID를 기반으로 배열/컬렉션에서 행 세부 정보를 읽습니다. (이상적으로 uid로 데이터 소스에서 직접 행 세부 정보를 읽고 데이터를 복제 할 필요가 없습니다.) 아래 코드를 의사 코드로 참조하십시오. 나는 그것을 실행할 기회가 없었다.

var rows = new Array(); 

$('.clickable').click(function() { 
    // get the id for your detail 
    var detailId = this.attr('detailId'); 
    // pass it further 
    showEmpDetails(detailId); 
}); 

function detailInit(e) { 
     detailRow = e.detailRow; 
     // add roe to your (cache) collection 
     rows[rows.legth] = detailRow ; 
     detailRow.find("#mygrid").kendoGrid({ 
      dataSource: {data: empModel}, 
      columns: [ 
       { 
        field: "empId", 
        title: "Emp ID", 
        // add attribute onto your a tag 
        template: '<a href="\\#" detailId = "#= rows.legth #" class="clickable">' 
       } 
         ] 
      }); 
}); 

function showEmpDetails(id) { 
    // read from your collection and do what you need 
    console.log(rows[id]); 
} 
+0

나는 괜찮다고 생각한다. 그러나 전역 배열에 저장하지 않고이 작업을 수행 할 수 있습니까? 어떤 해결책이 있습니까? – jestges

+0

예, 전역 배열을 사용하는 대신 uid가 datasource.data()를 직접 참조합니다. 이 솔루션의 문제점은 행을 찾으려면 data()를 반복해야하며, uid는 html 태그 노출에 대한 최선의 선택이 아닌 guid입니다. 적어도 위의 그림과 같이 uid를 조회하면됩니다. 예를 들어 데이터 소스에 실제 데이터를 저장하지만 uid와 배열 인덱스/키 사전을 통해 가져올 수 있습니다. – Vojtiik

+0

어떻게 관리하고 있습니까? – Vojtiik