如何动态更改IgxGrid的列索引?

时间:2019-01-21 06:40:24

标签: angular ignite-ui-angular igx-grid

我需要在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;
          }
        }
      }

这是我遇到的错误,

  

错误错误:未捕获(承诺):TypeError:无法设置属性   只有吸气剂的[object Object]的索引TypeError:无法   设置[object Object]的属性索引,该属性索引只有一个吸气剂

1 个答案:

答案 0 :(得分:0)

您是否将igx-grid列的初始呈现绑定到列设置?如果是,则*ngFor将使用其在ColumnSettings集合中持有的索引来呈现列。

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

与其保留index作为ColumnSettings数组中对象的属性,不如根据索引对数组重新排序。然后根据ColumnSettings组件的visibleIndex属性而不是igx-column属性重新排列index数组。

没有索引设置器的原因是,当列的索引发生更改时,该列应与目标索引处的列交换,或者目标之后的所有列的索引应递增到源。索引设置器的行为变得更加复杂,并且与固定的列产生更多的不一致,因为固定后,UI中不再反映数组中的索引,因为列可能位于索引5上,但是如果将其固定,然后将其冻结在网格的开头。