AG-Grid Export для Excel для экспорта Master-Detail в нескольких строках

У меня есть сетка master-detail ag-grid в моем приложении Angular 8, где одна основная строка имеет только 1 подстроку в сетке подробностей. Я использую ag-grid-enterprise: ^ 21.0.1. Все работает нормально, кроме:

  1. Экспорт в Excel не экспортирует сетку деталей в версии 21, но работает с файлом в версии 22. Я не нашел документации, подтверждающей это.
  2. Экспорт в Excel экспортирует сетку деталей под основной сеткой в ​​Excel. Есть ли способ разместить все заголовки Master и Details в одной строке в Excel?
  3. Развернуть любую главную строку существующие развернутые строки должны свернуться. Должна быть только одна строка основной детали, которую следует развернуть. Это похоже на базовую функцию, но я не видел ее ни в одном из примеров или документации.

person Yogesh    schedule 20.07.2020    source источник


Ответы (1)


При экспорте данных типа «мастер-деталь» вам необходимо настроить это в gridOptions и указать, когда следует экспортировать. Например:

this.defaultExportParams = {
      getCustomContentBelowRow: function(params) {
        return [
          [
            cell(''),
            cell('Call Id', 'header'),
            cell('Direction', 'header'),
            cell('Number', 'header'),
            cell('Duration', 'header'),
            cell('Switch Code', 'header'),
          ],
        ].concat(
          params.node.data.callRecords.map(function(record) {
            return [
              cell(''),
              cell(record.callId, 'body'),
              cell(record.direction, 'body'),
              cell(record.number, 'body'),
              cell(record.duration, 'body'),
              cell(record.switchCode, 'body'),
            ];
          }),
          [[]]
        );
      },
      columnWidth: 120,
    }

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

Что касается вашего третьего вопроса, вы можете использовать обратный вызов getDetailRowData, чтобы свернуть все остальные детали, например:

getDetailRowData: function(params) {
        this.gridApi.forEachNode(node => {
          node.expanded = false;
        });
        params.successCallback(params.data.callRecords);
      }.bind(this),

Взгляните на этот Plunker.

person ViqMontana    schedule 20.07.2020
comment
Привет, Викас, спасибо за помощь. GetDetailRowData отлично работает, проблема только в том, что значок не сворачивается вместе с данными. this.defaultExportParams: я использую его точно так же, как вы упомянули, но excel дает мне 2 строки, 1 для основного и 1 для подробностей ... Я хочу, чтобы и master, и detail в одной строке - person Yogesh; 20.07.2020