Как динамически изменить индекс столбца IgxGrid? - PullRequest
0 голосов
/ 21 января 2019

Мне нужно применить пользовательские настройки на IgxGrid. Я пытаюсь сделать так, чтобы каждый раз, когда пользователь изменял порядок столбцов, я сохранял индексы столбцов в моей базе данных и в следующий раз, когда пользователь откроет ту же таблицу; Мне нужно показать те же настройки на сетке, которые он сохранил ранее. Но когда я пытаюсь установить индекс столбца, он говорит, что нет никакого установщика для свойства индекса. Как мне добиться функциональности динамического изменения индексов столбцов? Вот что я пытаюсь сделать,

for (var iterator = 0; iterator < gridSettings.ColumnSettings.length; iterator++) {          

      if (this.componentRef.columns != null) {
        for (let colIndex = 0; colIndex < this.componentRef.columns.length; colIndex++) {

          if (this.componentRef.columns[colIndex].field == gridSettings.ColumnSettings[iterator].Key) {    

            this.componentRef.columns[colIndex].width = gridSettings.ColumnSettings[iterator].Width;
            this.componentRef.columns[colIndex].index = gridSettings.ColumnSettings[iterator].Index;

            break;
          }
        }
      }

Вот ошибка, с которой я столкнулся,

Ошибка: ошибка (в обещании): ошибка типа: невозможно установить свойство индекс [объекта Object], который имеет только получатель TypeError: Cannot установить индекс свойства объекта [Object Object], который имеет только геттер

1 Ответ

0 голосов
/ 21 января 2019

Связываете ли вы первоначальный рендеринг столбцов igx-grid с настройками столбцов? Если да, то *ngFor будет отображать столбцы с индексами, которые они содержат в коллекции ColumnSettings.

<igx-column *ngFor="let column of gridSettings.ColumnSettings" [width]="column.width">
  ...
</igx-column>

Вместо того, чтобы хранить index как свойство объектов в массиве ColumnSettings, переупорядочьте массив на основе индексов. Затем переставьте массив ColumnSettings на основе свойства visibleIndex компонента igx-column, а не свойства index.

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

...