Kendo Grid MVC - Обновление дочерней/детальной сетки

Я использую Kendo Grid с настройкой основных деталей. Сетка сведений называется DetailsGrid_#=Id#, поэтому она может получить доступ к идентификатору родительской записи — эта часть работает нормально.

Я настроил сетку сведений для обновления некоторой части резервных данных, и мне нужно обновить сетку сведений об успешном вызове $ajax. Я пытаюсь выбрать сетку деталей, используя:

var childGrid = $('#DetailsGrid_#=Id#').data("kendoGrid");
childGrid.refresh();

Но когда я запускаю этот код, я получаю сообщение об ошибке Jquery: «Неперехваченная ошибка: синтаксическая ошибка, нераспознанное выражение: DetailsGrid_#=Id#»

Может ли кто-нибудь предложить правильный способ выбора сетки сведений или другой способ вызова обновления?

Обновление. Проведя дополнительное исследование селекторов запросов, я вижу, что мне нужно избегать символов = и #. Теперь я изменил код следующим образом, который обходит ошибку «нераспознанное выражение», но теперь я получаю сообщение об ошибке «Невозможно вызвать метод« обновить »из неопределенного», поэтому сетка не распознается

var param = "DetailsGrid_#=Id#";
                var escapedParam = param.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@@])/g, '\\$1');
                //function escape(param) {
                //    return param.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@@])/g, '\\\\$1');
                //}
                var childGrid = $('#' + escapedParam ).data("kendoGrid");
                childGrid.refresh();

person user918064    schedule 24.02.2014    source источник
comment
Можете ли вы показать пользовательский шаблон Id?   -  person Vivek Parekh    schedule 24.02.2014
comment
Я бы просто вызвал обновление в родительской сетке, если вложенная сетка открыта после обновления родительской сетки, вложенная сетка закроется. Я тоже думал как это сделать, но безуспешно   -  person CSharper    schedule 24.02.2014


Ответы (2)


Так как я не знаю, как вы указываете идентификатор сетки.

Получите идентификатор сетки, которую вы хотите обновить. Сохраните его в переменной.

var newId = Id;// Id is Grid Id

var childGrid = $('#DetailsGrid_' + newId).data("kendoGrid");
childGrid.refresh();
person Vivek Parekh    schedule 24.02.2014
comment
Извините моя ошибка. У меня был # в исходном коде. я обновлю вопрос - person user918064; 24.02.2014
comment
Имя сетки не меняется, оно всегда #DetailsGrid_#=Id#. _#=Id# — это нотация кендо, которая извлекает идентификатор из родительской сетки. - person user918064; 24.02.2014

Вы не можете использовать #=Id# в этом контексте. Вы должны найти Id и использовать, как сказал Вивек Парекх. У меня есть пример, который может вам помочь: когда вы редактируете строку, вы можете получить ID на $("#Id").val(), чтобы вы могли получить Grid по коду:

var childGrid = $('#DetailsGrid_'+$("#Id").val()).data("kendoGrid");

Помните, что вы можете использовать только $("#Id").val() при редактировании строки, это ID отредактированной строки.

person John Nguyen    schedule 28.05.2014