2

私は現在、MVC Kendo Grid with Hierarchy ビューを使用して子アカウントを表示しています。これが私のメイン グリッドです (下の子)。このグリッドには、変更イベントを設定しました (下にもあります)。私の質問は、子グリッドで同じ変更機能を設定するにはどうすればよいですか? それぞれに異なる ID があるため、現在、適切に選択することができません。編集:選択した子行からのアカウントのIDのみが必要です

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

1 に答える 1

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>
于 2012-12-19T19:10:48.893 に答える