Взаимодействие с дочерней сеткой Kendo Ui

В настоящее время я использую MVC Kendo Grid с представлением Hierarchy для отображения дочерних учетных записей. Вот моя основная сетка (дочерняя ниже). Для этой сетки я настроил событие изменения (также ниже). Мой вопрос: как мне настроить ту же функцию изменения с дочерней сеткой? У каждого будет свой идентификатор, поэтому в настоящее время я не могу его правильно выбрать. РЕДАКТИРОВАТЬ: МНЕ НУЖЕН ТОЛЬКО ИДЕНТИФИКАТОР АККАУНТА ИЗ ВЫБРАННОЙ ДОчерней строки

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

person Chazt3n    schedule 19.12.2012    source источник


Ответы (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>
person Petur Subev    schedule 19.12.2012
comment
Ни за что, я собираюсь дать этому шанс. Спасибо за ответ, если это сработает, я, конечно, соглашусь. - person Chazt3n; 19.12.2012
comment
Конечно, дайте мне знать, если есть какие-либо ошибки JavaScript, я мог что-то упустить - person Petur Subev; 19.12.2012
comment
Событие изменения срабатывает, знаете ли вы, как я могу вернуть идентификатор дочерней строки? - person Chazt3n; 20.12.2012
comment
Используйте var item = this.dataItem(this.select()); и извлеките любое свойство из модели, которую вы хотите. - person Petur Subev; 20.12.2012
comment
Код, которым я поделился в своем первом посте, предназначался для получения идентификатора родителя. - person Petur Subev; 20.12.2012