Как вставить строку по индексу в отсортированную ag-сетку - PullRequest
2 голосов
/ 26 марта 2019

У меня есть сетка с включенной сортировкой.В каждой строке есть дублирующаяся кнопка.При дублировании строки я хотел бы вставить новую строку чуть ниже скопированной строки.Это работает с сортировкой по умолчанию, но если вы сортируете ее по столбцу, как, например, статус, он случайным образом вставляет строку в сетку, затрудняя ее поиск.

Я заметил, что сетка иногда выполняет сортировкуво время сохранения, но до того, как он получит ответ о назначении нового идентификатора.

Я попытался добавить строку, используя updateRowData (транзакция) с addIndex, но он либо ничего не вставляет, либо игнорирует индекс.

У меня есть доступ к любым компонентным переменным из postSort, но я получаю ответ только с идентификатором после postSort.

cloneRow(item: any): void {
 let newRow = JSON.parse(JSON.stringify(item.data)) as Object;
 newRow.gridItemId = null;

 this.index = this.api.getFocusedCell().rowIndex;

 this.selectRow(newRow, ++index);
 this.saveRow(newRow);
}

selectRow(newRow: Object, index: number) {
 this.selectedObject = [];
 this.gridItemList.splice(index, 0, newRow);

 this.api.setFocusedCell(index, "ColumnName");
 this.api.startEditingCell({
  rowIndex: index,
  colKey: "ColumnName"
 });
}

saveRow(newRow: Object): void {
 let objectsToSave = new Array<Object>();
 objectsToSave.push(newRow);

 this.CustomService.saveRow(objectsToSave)
  .subscribe(
   (response) => {
    if (!newRow.rowId) {
     newRow.rowId = response[0].rowId;
    }
    this.gridItemList.filter(g => g.gridItemId === response[0].gridItemId)[0] = response[0];
    this.api.refreshCells();
}

postSort = function(rowNodes) {
 console.log("Post Sort");
}

Ожидается: скопированная строка вставляется чуть ниже исходной строки.Фактически: скопированная строка вставляется где-то в сетке.

1 Ответ

0 голосов
/ 27 марта 2019

случайным образом вставляет строку в сетку, затрудняя ее поиск.

На самом деле - нет (не случайно), новые значения могут быть вставлены через updateRowData

api.updateRowData({add:[listofvalues], addIndex:startIndexPosition})

, где listofvalues список объектов для вставки (даже если это будет только один объект) и startIndexPosition индекс позиции, откуда начинается вставка без сортировки

Давайте пойдем глубже, у ag-сетки мало состояний :

  1. По умолчанию : оно будет отображаться точно так, как оно передано rowData, и в этом случае addIndex имеет значение, и я полагаю, что используется только состояние по умолчанию addInex.
  2. Сортировка : будет отображаться в зависимости от условий сортировки.
  3. Groupped : угадайте его сложное состояние, потому что группа также может быть определена по умолчанию и имеет сортировку

Простой пример для демонстрации

попытаться отсортировать (изменить на сортировку asc, desc и default) по athlete и нажать добавить строку, вы увидите новые строки в начале, конце и на вставленном месте (с состоянием по умолчанию) )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...