2012-12-19 6 views
2

현재 계층 뷰가있는 MVC 검도 그리드를 사용하여 하위 계정을 표시하고 있습니다. 여기 내 메인 그리드 (아래의 하위)입니다.이 그리드에서 변경 이벤트 (아래)도 설정했습니다. 내 질문은, 어떻게 하위 그리드와 동일한 변경 기능을 설정합니까? 각기 다른 ID를 가지므로 현재 제대로 선택할 수 없습니다. EDIT : 난 ONLY 선택된 CHILD 행과검도 Ui 하위 그리드와 상호 작용

@(Html.Kendo().Grid<TRX.CRM.Dashboard.Entities.DashBoard.Accounts>() 
    .Name("Grid") 
    .Columns(columns => 
    { 
     columns.Bound(p => p.Acct_FName).Width(80); 
     columns.Bound(p => p.Acct_LName).Width(80); 
     columns.Bound(p => p.Acct_Type).Width(90); 
     columns.Bound(p => p.Acct_LastContact).Width(140); 
     columns.Bound(p => p.Acct_Zip).Hidden(); 
     columns.Bound(p => p.ID).Hidden(); 

    }) 
     .ClientDetailTemplateId("ChildAccounts") 
     .DataSource(dataSource => dataSource 
     .Ajax() // Specify that the data source is of ajax type 
     .Model(model => model.Id(a => a.ID)) 
     .Events(events => events.Error("error")) 
     .Read(read => read.Action("ReadAccounts", "Accounts")) // Specify the action method and controller name 
     .Destroy(destroy => destroy.Action("DeleteAccount", "Accounts")) 
     .PageSize(50) 
    ) 
    .Pageable() 
    .Filterable() 
    .Selectable() 
    .Scrollable() 
    .Sortable() 
    .Events(events => events.Change("gridChange")) 
    .Events(events => events.DataBound("dataBound")) 
    .ToolBar(toolbar => toolbar.Template(
    @<text> 
<div class="toolbar"> 
    <select id="FilterCategory"></select> 
    <input type="search" id="Search" style="width: 230px" /> 
</div> 
</text> 
    )) 
) 

어린이 그리드 계정의 ID가 필요 여기

<script id="ChildAccounts" type="text/kendo-tmpl"> 
    @(Html.Kendo().Grid<TRX.CRM.Dashboard.Entities.DashBoard.Accounts>() 
     .Name("SubAccounts_#=ID#") 
     .Columns(columns => 
     { 
     columns.Bound(p => p.Acct_FName).Width(80); 
     columns.Bound(p => p.Acct_LName).Width(80); 
     columns.Bound(p => p.Acct_Type).Width(90); 
     columns.Bound(p => p.Acct_LastContact).Width(140); 
     columns.Bound(p => p.Acct_Zip).Hidden(); 
     columns.Bound(p => p.ID).Hidden(); 
     }) 
     .DataSource(dataSource => dataSource 
      .Ajax() 
      .Read(read => read.Action("ReadSubAccounts", "Accounts", new { ID = "#=ID#" })) 
     ) 
     .Pageable() 
     .Sortable() 
     .Selectable() 
     .ToClientTemplate() 
) 
</script> 

function dataBound() { 
    // this.expandRow(this.tbody.find("tr.k-master-row").first()); 
} 

은 (간결 단축)가 GridChange 함수이다

function gridChange(e) { 
    //Enable all button -Prakash Date-07/27/2012 
    accountsButtons.button({ disabled: false }); 
    $("#nodeList").html(''); 
    $("#updateMessage").html(''); 
    $("#noteMessage").html(''); 
    $("#Note_Description").val(''); 
    kdata = this; 

답변

1

동일한 이벤트를 자식 Grid에 선언하는 데 아무런 문제가 없습니다.

@(Html.Kendo().Grid<TRX.CRM.Dashboard.Entities.DashBoard.Accounts>() 
     .Name("SubAccounts_#=ID#") 
     .Columns(columns => 
     { 
      columns.Bound(p => p.Acct_FName).Width(80); 
     columns.Bound(p => p.Acct_LName).Width(80); 
     columns.Bound(p => p.Acct_Type).Width(90); 
     columns.Bound(p => p.Acct_LastContact).Width(140); 
     columns.Bound(p => p.Acct_Zip).Hidden(); 
     columns.Bound(p => p.ID).Hidden(); 
     }) 
     .Events(ev=>ev.Change("detailGridChange")) 
     .DataSource(dataSource => dataSource 
      .Ajax() 
      .Read(read => read.Action("ReadSubAccounts", "Accounts", new { ID = "#=ID#" })) 
     ) 
     .Pageable() 
     .Sortable() 
     .Selectable() 
     .ToClientTemplate() 
) 

<script> 
    function detailGridChange(e){ 
      var parentDataItem = $('#Grid').data().kendoGrid.dataItem($(this.element).closest('.k-detail-row').prev('.k-master-row')); 
      alert(parentDataItem.ID); 
    } 
</script> 
+0

아니요, 저는이 사진을 찍을 것입니다. 응답 해 주셔서 감사 드리며 작동한다면 당연히 받아 들일 것입니다. – Chazt3n

+1

확실한데요, 자바 스크립트 오류가 있다면 알려주세요. 뭔가 놓쳤을 수도 있습니다. –

+0

변경 이벤트가 발생합니다. 어떻게 아이 행의 ID를 반환 할 수 있는지 알고 계십니까? – Chazt3n