2012-12-19 72 views
2

我目前使用MVC Kendo網格與層次結構視圖來顯示子帳戶。 這是我的主要網格(下面的孩子)對於這個網格,我設置了更改事件(也在下面)。我的問題是,如何使用子網格設置相同的更改功能?每個人都有不同的ID,所以我目前無法正確選擇它。 編輯:我只需要的帳戶的ID從所選擇的子行與Kendo 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> 
    )) 
) 

兒童網格:

<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

將子事件聲明爲子網格完全沒有問題。

@(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

當然,讓我知道是否有任何JavaScript錯誤,我可能錯過了一些東西 –

+0

更改事件觸發,你知道我怎麼能返回子行的ID嗎? – Chazt3n