Получить детей igHierarchicalGrid на 3-м уровне

Я создал 3-х уровневую инфраструктуру igHierarchicalGrid, которая выглядит следующим образом:

Я хочу выбрать третью строку с ProductNumber программно. Я могу сделать это до второго уровня (пицца), но я не могу достичь того же самого для записей третьего уровня.

Ниже мой код для выбора пиццы

var parentGrid = grid.igHierarchicalGrid("rootWidget");
var row = parentGrid.rowAt(0);
grid.igHierarchicalGrid("expand", row);   
var subGrids = grid.igHierarchicalGrid("allChildren");
$(subGrids).each(function(index, subGrid) {
    $(subGrid).igGridSelection("selectRow", 0);
});

grid.igHierarchicalGrid("allChildren") возвращает все дочерние элементы развернутых в данный момент строк, но возвращает их как элементы сетки, в то время как моя проблема заключается в том, что эти элементы также являются HierarchicalGrids, из которых я хочу расширить и выбрать дочерние элементы.

1 ответ

Решение

Экземпляр igHierarchicalGrid находится только в корневой сетке. С помощью API корневого грида вы можете развернуть / свернуть ряды детей. Вот как выбрать строку 3-го уровня:

var grid = $("#grid1");
var parentGrid = grid.igHierarchicalGrid("rootWidget");
var row = parentGrid.rowAt(0);
grid.igHierarchicalGrid("expand", row, function () {
    var subGrids = grid.igHierarchicalGrid("allChildren"), currentGrid;
    if (subGrids && subGrids[0]) {
        currentGrid = $(subGrids[0]); 
        grid.igHierarchicalGrid("expand", currentGrid.igGrid("rowAt", 0), function () {
            var subGrids = grid.igHierarchicalGrid("allChildren");
            if (subGrids && subGrids[1]) {
                $(subGrids[1]).igGridSelection("selectRow", 0);
            }
        });
    }
});

Имейте в виду, что igHierarchicalGrid.expand является асинхронным API, и лучше использовать 3-й callback Параметр для выполнения вашей логики после завершения расширения.

Другие вопросы по тегам