https://jsfiddle.net/4byyuqtc/1/
Я ищу, чтобы ui-сетка выбирала все "дети" под группировкой, когда выбрана линия группировки. В этом случае Kit Kat (1), Mr. Goodbar (1), Krackel (2) и в конечном счете выбирают фактические записи (не жирные строки). Можно было бы ожидать, что при выборе родителя в группе все его дети также будут выбраны.
В настоящее время, когда вы выбираете 1 группу над фактическими записями в данных (не жирные строки), она выбирает эти фактические записи со следующим кодом:
$scope.gridApi.selection.on.rowSelectionChanged($scope, function (rowChanged) {
console.log(rowChanged.treeLevel);
if (typeof (rowChanged.treeLevel) !== 'undefined' && rowChanged.treeLevel > -1) {
// this is a group header
children = $scope.gridApi.treeBase.getRowChildren(rowChanged);
console.log(children);
children.forEach(function (child) {
if (rowChanged.isSelected) {
$scope.gridApi.selection.selectRow(child.entity);
} else {
$scope.gridApi.selection.unSelectRow(child.entity);
}
});
}
});
На этом этапе я не достаточно опытен с помощью ui-grid, чтобы выяснить, как циклически перемещать дочерние элементы выбранной строки и выбирать все из них.
[EDIT]
При использовании кода Paul ниже он не выбирает группы, но ближе. Этот снимок экрана - это выбор первой записи 337. Обратите внимание, что он выбирает эту запись и все младшие дочерние записи (что хорошо, потому что в конечном итоге это те, которые имеют значение), но визуально сгруппированные записи (группа MFG и элемент Desc) не выбраны и должны быть такими, какие пользователь не будет когда-либо открывайте самые низкие записи данных, чтобы они могли видеть выбранные группы.