Javascript 如何在setColumnState()之后在左侧显示组列?
我正在使用Ag网格在我的网站上显示数据。我希望允许用户修改视图状态(更改列顺序、组行、筛选器等);保存修改后的状态;以后再恢复。我知道这是标准功能,我在这里遵循官方示例: 与示例一样,我的代码使用Javascript 如何在setColumnState()之后在左侧显示组列?,javascript,ag-grid,Javascript,Ag Grid,我正在使用Ag网格在我的网站上显示数据。我希望允许用户修改视图状态(更改列顺序、组行、筛选器等);保存修改后的状态;以后再恢复。我知道这是标准功能,我在这里遵循官方示例: 与示例一样,我的代码使用const savedState=gridOptions.columnApi.getColumnState()以获取/保存列状态。稍后,gridOptions.columnApi.applyColumnState({state:savedState})以恢复状态 我遇到的问题是,如果用户对行进行分组,“
const savedState=gridOptions.columnApi.getColumnState()
以获取/保存列状态。稍后,gridOptions.columnApi.applyColumnState({state:savedState})代码>以恢复状态
我遇到的问题是,如果用户对行进行分组,“Group”列将在恢复列状态时移到最右侧。它在第一次分组时从左侧开始(这是我想要的),但在恢复时会移到右侧(这不是我想要的)
如何获取setColumnState()之后左侧的组列?
我在官方的例子中看到了同样不受欢迎的行为。举例说明:
转到上面发布的示例链接
按某个字段分组(本例中为运动)
“组”列在最左边自动填充(我想要)
单击:保存状态。重置状态。恢复状态
还原状态现在在最右侧显示“组”列(这不是我想要的)
您必须通过applyOrder:false
才能获得最左侧的组列
function restoreState() {
if (!window.colState) {
console.log('no columns state to restore by, you must save state first');
return;
}
gridOptions.columnApi.applyColumnState({
state: window.colState,
applyOrder: false, // Make it false here
});
console.log('column state restored');
}
这里有一个活生生的例子:您必须通过applyOrder:false
才能获得最左边的group列
function restoreState() {
if (!window.colState) {
console.log('no columns state to restore by, you must save state first');
return;
}
gridOptions.columnApi.applyColumnState({
state: window.colState,
applyOrder: false, // Make it false here
});
console.log('column state restored');
}
下面是一个实例:不幸的是,您所描述的行为是一个BUG,它已在当前每晚构建的AG Grid版本中修复。因此,您需要等到下一个版本(可能是25.2.0)
我知道这没用,但至少你不会为了找到解决问题的办法而不断地自责。目前,您可以做的是应用状态,然后将分组列移到左侧
gridOptions.columnApi.moveColumns(['ag-Grid-AutoColumn'], 0);
请参阅:不幸的是,您描述的行为是一个BUG,它已在当前AG Grid的夜间构建版本中修复。因此,您需要等到下一个版本(可能是25.2.0)
我知道这没用,但至少你不会为了找到解决问题的办法而不断地自责。目前,您可以做的是应用状态,然后将分组列移到左侧
gridOptions.columnApi.moveColumns(['ag-Grid-AutoColumn'], 0);
请参阅:谢谢!虽然我不太确定这正是我需要的。我相信applyOrder:false
将禁止所有订购更改?因此,如果用户对列重新排序,则不会应用该选项?我只想保持列顺序与设置/显示完全相同,包括最左边的“Group”列,以及用户可能输入的任何其他列顺序更改。他们编写的实现“auto Group columns被重新创建,因此推迟与ColumnState同步”。因此,即使自动分组列是colState数组的第一个元素,它们也不会立即将其放入末尾,而是在放入所有其他列后将其置于末尾。当它们在内部调用applyOrderAfterApplyState
时,它们会根据重新排序的colState
应用顺序,从而将自动分组列置于末尾。谢谢!虽然我不太确定这正是我需要的。我相信applyOrder:false
将禁止所有订购更改?因此,如果用户对列重新排序,则不会应用该选项?我只想保持列顺序与设置/显示完全相同,包括最左边的“Group”列,以及用户可能输入的任何其他列顺序更改。他们编写的实现“auto Group columns被重新创建,因此推迟与ColumnState同步”。因此,即使自动分组列是colState数组的第一个元素,它们也不会立即将其放入,而是在放入所有其他列之后将其置于末尾,他们根据重新排序的colState
应用顺序,将自动分组列置于末尾。感谢您让我知道!这并不理想,但我会尝试测试您提出的解决方案-目前这可能已经足够好了。感谢您让我知道!这并不理想,但我将尝试测试您提出的解决方案——目前这可能已经足够好了。