У меня есть многоотборный jqGrid с множественным выбором grid-as-subgrid. Как получить ссылку на дочернюю сетку в событии onSelectRow
для родительской сетки?
По сути, мне нужно сделать следующее:
- Развернуть подсеть (чтобы загрузить ее данные с сервера)
- Получить ссылку на эту подсеть
- С помощью ссылки проведите цикл по строкам и установите для каждой из них значение selected (Для строк, которые имеют собственную вложенную сетку, это вызовет их
onSelectRow
и повторит процесс. Не волнуйтесь, сетка не глубиной более 3 гнезд.)
Этим утром я просматриваю различную документацию , но до сих пор не заметил, что мне нужно, чтобы это произошло. Может я просто упускаю очевидное? Или, может быть, для этого потребуется немного больше ума?
Я вижу, как описанный выше шаг 3 можно выполнить, начиная с getRowData()
и просматривая результаты с setSelection()
. Я использую их в другом месте кода, и они отлично работают. Но шаги 1 и 2 выше - вот где я застрял на данный момент.
Редактировать: Следуя @ ответу Олега ниже, я немного больше посмотрел на синхронизацию усилий между событием onSelectRow
родительской сетки и событием subGridRowExpanded
. Вот развернутая версия того, что я сейчас тестирую:
onSelectRow: function(id, status) {
// Automatically expand the sub-grid (to load the data) and select the rows in that grid
autoSelecting = true; // autoSelecting is a global variable normally set to false
$('#mainGrid').expandSubGridRow(id);
}
subGridRowExpanded: function(subgrid_id, row_id) {
//... build the sub-grid, works fine (an artifact of which is a subgrid_table_id)
// If this grid was auto-expanded to be auto-selected, select all its rows
if (autoSelecting) {
var sdata = $('#' + subgrid_table_id).getRowData();
for (var i = 0; i < sdata.length; i++) {
$('#' + subgrid_table_id).setSelection(sdata[i].Id);
}
autoSelecting = false;
}
}
Здесь происходит несколько вещей, когда я возиться с этим:
- Если я перехожу через FireBug для отладки, выборки и подвыборы работают правильно. Однако, если я уберу точки останова и попробую это в режиме реального времени, подвыборов не произойдет. Подсетка расширяется, но ее строки не выделяются. Я полагаю, что где-то есть проблема с синхронизацией.
- Я пока не учел каскадного отмены выбора.
- Если подсетка уже расширена, выбор не будет каскадным.