У меня есть иерархическая иерархия кендо. Когда я нажимаю строку в родительской сетке, родительская строка выбирается и расширяется, чтобы показать дочернюю сетку. Моя проблема в том, что мне нужно иметь возможность изменять все дочерние строки в выбранном состоянии.
Вот как я могу изменить родительскую строку в выбранное состояние:
$("#gridMasterInfo").delegate('tbody>tr', 'click', function (e) {
var row = $(this);
$(this).toggleClass('k-state-selected');
});
Вот пример JSFiddle выбора строки до сих пор
Любая помощь приветствуется, спасибо.
Вам нужно немного программирования и знать, как выбирать и отменить выбор строк...
Самое первое, что создает метод detailInit
для вашей сетки, вы, вероятно, знакомы с этим, и единственное, что здесь, это добавить небольшой трюк, чтобы легко найти строки данных в родительской сетке.
function detailInit(e) {
$("<div class='ob-child-grid'/>").appendTo(e.detailCell).kendoGrid({
...
});
}
Как вы можете видеть, я добавил ob-child-grid
в контейнер сетки. Я действительно могу полагаться на k-secondary
(этот класс добавлен интерфейсом Kendo UI к этому узлу), но я предпочитаю не полагаться на не документированную функциональность, поэтому код менее уязвим для будущих модификаций KendoUI.
Далее задается обработчик change
который вызывается при выборе строки в родительском элементе. Эта функция должна:
Давайте посмотрим, как это сделать:
// Remove previous selections
$("tr", ".ob-child-grid").removeClass("k-state-selected");
Как вы видите, этот шаг довольно прост, просто удалите "k-state-selected", это все, что вам действительно нужно.
// Find the child grid.
var child = this.select().next().find(".ob-child-grid");
this.select()
получает в настоящее время выбранную строку, а next()
получает следующую строку, где KendoUI помещает дочернюю сетку. С помощью find(".ob-child-grid")
мы находим узел, где на самом деле сетка.
// Select every row
$("tr", child).addClass("k-state-selected");
Мы добавляем k-state-selected
который является классом, который отмечает выбранную строку.
Вы можете играть с этой идеей здесь: http://jsfiddle.net/OnaBai/XaMer/