Я только что впервые реализовал ag-grid, и у меня есть вариант использования, аналогичный приведенному выше. Поскольку у меня есть только бесплатная версия, я последовал примеру File Browser, который реализует вложенные строки путем формирования данных перед их передачей в сетку (т. е. преобразование Model -> ViewModel).
Форма, необходимая сетке, в значительной степени является стандартным представлением иерархических данных, вам просто нужен массив 'children' вложенных данных (это взято из примера FileBrowser):
{
folder: true,
name: 'D:',
children: [
{name: 'Game of Thrones s05e01.avi', size: '1034 mb', type: 'Movie', dateModified: '13/03/2014 10:14'},
{name: 'The Knick s01e01', size: '523 mb', type: 'Text Document', dateModified: '27/11/2012 04:12'},
{name: 'musicbackup1.zip', size: '25 mb', type: 'Compressed Zip File', dateModified: '18/03/2014 00:56'},
{name: 'musicbackup2.zip', size: '25 mb', type: 'Compressed Zip File', dateModified: '18/03/2014 00:56'}
]
}
Обратите внимание, что у вас могут быть невложенные столбцы перед столбцом, который переключает вложенные строки (представление родитель-потомок).
Чтобы преобразовать свойства json в массив пар ключ-значение, см. эту статью StackOverflow Преобразовать свойства и значения объекта в массив пар ключ-значение.
Шаги, которые нужно предпринять, чтобы включить вложенные строки:
Добавьте свойство cellRenderer в определение столбца, которое будет открывать вложенные ячейки. Вы можете подумать, что вам также нужно свойство cellRendererParams, но это только для добавления нетекстового содержимого в ячейку.
{ headerName: "Name", field: "name", width: 250,
cellRenderer: 'group'
},
Реализуйте getNodeChildDetails в структуре gridOptions. Обратите внимание, что «файл» ниже — это данные узла, а file.folder — это флаг данных (не для отображения), который сообщает этой функции, есть ли вложенные строки для отображения.
getNodeChildDetails: function(file) {
if (file.folder) {
return {
group: true,
children: file.children,
expanded: file.open
};
} else {
return null;
}
},
Добавьте объект icons в структуру gridOptions.
icons: {
groupExpanded: '<i class="fa fa-minus-square-o"/>',
groupContracted: '<i class="fa fa-plus-square-o"/>'
},
Возможная ошибка
Я попытался реализовать функцию getRowHeight (в gridOptions), но сразу перестал работать переключатель вложенных строк. Если найду причину, отпишусь позже.
person
Richard Matsen
schedule
15.05.2016