0

我正在使用惊人的 angularslickgrid 开发一个应用程序。到目前为止,我没有任何问题,购买我发现它有一个奇怪的行为。在ngOnInit 中,我编写了以下代码:

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

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

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

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

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

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

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);

有人可以帮我吗?

非常感谢!

4

1 回答 1

0

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

重置是重置,所以它不会保留它。但是不久前我在网格状态中添加了行选择,所以你可以从那里得到它(只需检查Grid State/Presets - Wiki 。在这个示例 3中可以看到动态添加新列,你应该看看有关如何使其正确显示的代码(您不能只添加它,您需要手动触发脏更改调用,请查看示例代码)

还要为此添加更多内容,SlickGrid Row Selection 是按行索引,而不是按行数据。这意味着如果您的数据在您刷新时发生变化,并且您保留行选择,它将不再同步......所有这一切,请记住,它是一个行索引,所以当您想要保留或想要重新应用时要注意行选择。

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

于 2021-04-29T15:23:26.667 回答