如何解决更改列定义时的 AngularSlickGrid 问题
我正在使用令人惊叹的 angularslickgrid 开发应用程序。 到目前为止,我没有遇到任何问题,购买我发现它有一个奇怪的行为。 在 ngOnInit 中,我编写了以下代码:
ngOnInit(){
this.defineGridHeaders();
this.defineGridOptions();
this.obtainData();
}
到目前为止一切正常,网格正确加载了包括 RowSelection 列在内的数据。
问题是当我尝试更改列定义并执行这样的 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);
有人可以帮我解决这个问题吗?
非常感谢!
解决方法
请注意,我是 Angular-Slickgrid 的作者,您在 GitHub 上提出了同样问题的问题,我将在这里简单地回复相同的答案
重置是重置,因此不会保留。但是不久前我在网格状态中添加了行选择,因此您可以从那里获取它(只需检查 Grid State/Presets - Wiki。在此 Example 3 中可以看到动态添加新列,您应该查看有关如何使其正确显示的代码(您不能只是添加它,您需要手动触发一个脏更改调用,请查看示例代码)
另外还要补充一点,SlickGrid 行选择是按行索引,它不是按行数据。这意味着如果您的数据在刷新或其他内容时发生更改并且您保留行选择,它将不再同步......所有这一切,请记住,它是一个行索引,所以当您想保留或想要重新应用时要注意行选择。
如果只是行选择丢失,只需在添加列之前保存它,并在添加列后放回选择。很简单,在更改列定义之前获取行选择(使用 getSelectedRows
),添加新列,然后放回选择(使用 setSelectedRows
)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。