ag-grid: startEditing autoColumnDef для представления дерева - PullRequest
1 голос
/ 19 апреля 2020

У меня есть <ag-grid> с использованием Angular, и я пытаюсь сделать одну вещь: когда вы нажимаете кнопку, чтобы добавить строку в сетку, я хочу иметь возможность сфокусироваться и начать редактировать ввод для этого строка и этот столбец

В документации мне удалось добиться того, чтобы это работало с различными столбцами в различных ag-grid s в моем приложении, используя такой код:

this.gridApi.startEditingCell({
    rowIndex: 0,
    colKey: 'description'
});

Однако в одном особом случае в одной из моих сеток я использую дерево и autoGroupColumnDef вот так:

<ag-grid-angular
        #agGrid
        style="width: 100%; height: 100%;"
        id="myGrid"
        class="ag-theme-balham"
        [modules]="modules"
        [columnDefs]="columnDefs"
        [rowData]="rowData"
        [treeData]="true"
        [getDataPath]="getDataPath"
        [defaultColDef]="defaultColDef"
        [frameworkComponents]="frameworkComponents"
        [groupDefaultExpanded]="groupDefaultExpanded"
        [autoGroupColumnDef]="autoGroupColumnDef"
        (gridReady)="onGridReady($event)"
        (cellValueChanged)="handleChanges($event)"
        (columnMoved)="handleColumnChanges($event)"
        [getRowNodeId]="getRowNodeId"
        [context]="this"
      ></ag-grid-angular>

А затем в моей машинописи мой autoGroupColumnDef определен в моем конструкторе следующим образом :

this.autoGroupColumnDef = {
      editable: true,
      headerName: "Account #",
      field: "accountNum",
      filter: "agGroupCellRenderer",
      cellRendererParams: {
        suppressCount: true,
        innerRenderer: 'AccountNameColumnDisplayer',
      },
};

Проблема в том, что когда я пытаюсь запустить код следующим образом:

this.gridApi.startEditingCell({
    rowIndex: 0,
    colKey: 'accountNum'
});

Я получаю предупреждение, которое говорит ag-grid-community.cjs.js:27041 ag-Grid: no column found for accountNum

Для записи данные, которые я предоставляю this.rowData, включают свойство с именем accountNum

Есть ли здесь что-то простое, что я не замечаю или что-то делаю неправильно? Я просмотрел всю документацию по ag-grid и не могу понять, как это решить. Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 23 апреля 2020

Прежде всего, давайте разберемся с colKey . ColKey на самом деле не привязан напрямую к свойству поля. Из документов:

Некоторые из методов API принимают Column Key (с именем colKey), который имеет тип Column | строка. Это означает, что вы можете передать либо объект Column (полученный при вызове одного из других методов), либо передать идентификатор столбца (который является строкой). Идентификатор столбца является свойством определения столбца. Если вы не предоставите идентификатор столбца, сетка создаст его для вас (сначала попытайтесь использовать поле, если оно уникально, в противном случае будет создан идентификатор).

Итак, colKey это либо сам объект столбца, либо colId, заданный вами в определении столбца, свойство поля или случайная строка (в таком порядке).

Ваш первый инстинкт может быть go и установить Свойство colId вашего столбца autoGroupColumnDef. Но увы! По моему опыту, agGrid бросает вам еще один изогнутый шар, и это тоже не сработает ... почему?

Это потому, что agGrid всегда делает autoGroupColumnDef colId: ag-Grid-AutoColumn

TLDR : используйте colKey "ag-Grid-AutoColumn" для столбца autoGroupColumnDef!

Приветствия!

0 голосов
/ 19 апреля 2020

Из того, что я могу догадаться, я не думаю, что ваше поле accountNum является частью columnDefs.

Вам не нужно указывать поле в autoColumnGroupDef, вместо этого укажите accountNum для фактического columnDefs что-то вроде этого -

  {
    field: 'accountNum',
    hide: true,
  }

За кулисами autoGroupColumnDefs - не что иное, как средство визуализации ячеек группы ag-grid в столбце, обозначенном rowGroup=true.

Поскольку ваши данные уже в древовидном формате, ag-grid заботится о группировке.

Из документов -

Когда сетка работает с данными дерева, нет необходимости явно указывать группу столбцов, поскольку сетка будет использовать группу автоматических столбцов.

Автоматические столбцы, генерируемые сеткой, используют средство визуализации групповой ячейки, предоставленное ag-Grid. Это означает, что gridOptions.autoGroupColumnDef также можно использовать для передачи дополнительных свойств для дальнейшей настройки отображения ваших групп.

Подробнее здесь

...