更改列定义时的 AngularSlickGrid 问题

AngularSlickGrid problems when change the columndefinition

我正在使用令人惊叹的 angularslickgrid 开发应用程序。 到现在为止,我没有遇到任何问题,我发现它有一个奇怪的行为。 在 ngOnInit 我写了下面的代码:

ngOnInit(){   
    this.defineGridHeaders();
    this.defineGridOptions();
    this.obtainData(); 
  }

到目前为止一切正常,网格正确加载数据,包括 RowSelection 列。

问题是当我尝试更改列定义并执行 reset() 时,如下所示:

    this.defineGridHeaders();
    this.angularGrid.gridService.resetGrid();

新列已正确加载,但我丢失了 rowSelection 列。:(

我尝试在 defineGridHeaders() 中间包含 defineGridOptions() 函数resetGrid() 但结果是一样的。

this.defineGridHeaders() 中,我只执行以下操作:

this.columnDefinitions = [];

[...FIELDS CREATION...]

      const col = {
        id,
        name,
        field,
        sortable,
        filterable,
        type,
        editor,
        formatter,
        filter,
        outputType,
        params,        
        minWidth: minwidth,
        width: width,
        header: header,
        excludeFromExport,
        excludeFromGridMenu,
        excludeFromQuery,
        excludeFromHeaderMenu
      };

this.columnDefinitions.push(col);

有人可以帮我解决这个问题吗?

非常感谢!

请注意,我是 Angular-Slickgrid 的作者,您在 GitHub 上提出了一个具有相同问题的问题,我将在这里简单地回复相同的答案

重置就是重置,所以它不会保留那个。但是不久前我在网格状态中添加了行选择,所以你可以从那里得到它(只需检查 Grid State/Presets - Wiki. Dynamically adding a new column can be seen in this Example 3,你应该看看如何让它正确显示的代码(你可以'不只是添加它,您需要手动触发一个脏更改调用,查看示例代码)

还要补充一点,SlickGrid 行选择是按行索引不是按行数据。这意味着如果你的数据在你刷新或其他什么的时候发生变化并且你保持行选择它不会再同步......所有这一切,请记住,它是一个行索引,所以当你想要保留或想要重新应用时要注意行选择。

如果只是丢失了行选择,只需在添加列之前保存它并在添加列之后放回选择。很简单,在更改列定义之前获取行选择(使用 getSelectedRows),添加新列然后放回选择(使用 setSelectedRows)。