Расширяемые строки с вложенными расширяемыми значениями?

Мои данные содержат столбец, значение которого находится в формате JSON. Я хотел бы выполнить две вещи:

  1. Разверните каждую строку, чтобы были перечислены ее значения.
  2. Разверните конкретное значение, чтобы, если его значение находится в формате JSON, ключи/значения также были представлены во вложенном списке внутри списка из элемента 1.

Например:

Это 3 разных результата:

введите здесь описание изображения

И это первый расширяемый результат:

введите здесь описание изображения

Был бы признателен за вашу помощь.


person johni    schedule 03.05.2016    source источник
comment
Вы нашли какие-либо решения вышеуказанной проблемы?   -  person Manoj Patidar    schedule 02.09.2018


Ответы (1)


Я только что впервые реализовал 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 Преобразовать свойства и значения объекта в массив пар ключ-значение.

Шаги, которые нужно предпринять, чтобы включить вложенные строки:

  1. Добавьте свойство cellRenderer в определение столбца, которое будет открывать вложенные ячейки. Вы можете подумать, что вам также нужно свойство cellRendererParams, но это только для добавления нетекстового содержимого в ячейку.

    { headerName: "Name", field: "name", width: 250,
        cellRenderer: 'group'
    },
    
  2. Реализуйте getNodeChildDetails в структуре gridOptions. Обратите внимание, что «файл» ниже — это данные узла, а file.folder — это флаг данных (не для отображения), который сообщает этой функции, есть ли вложенные строки для отображения.

    getNodeChildDetails: function(file) {
        if (file.folder) {
            return {
                group: true,
                children: file.children,
                expanded: file.open
            };
        } else {
            return null;
        }
    },
    
  3. Добавьте объект 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