Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在setColumnState()之后在左侧显示组列?_Javascript_Ag Grid - Fatal编程技术网

Javascript 如何在setColumnState()之后在左侧显示组列?

Javascript 如何在setColumnState()之后在左侧显示组列?,javascript,ag-grid,Javascript,Ag Grid,我正在使用Ag网格在我的网站上显示数据。我希望允许用户修改视图状态(更改列顺序、组行、筛选器等);保存修改后的状态;以后再恢复。我知道这是标准功能,我在这里遵循官方示例: 与示例一样,我的代码使用const savedState=gridOptions.columnApi.getColumnState()以获取/保存列状态。稍后,gridOptions.columnApi.applyColumnState({state:savedState})以恢复状态 我遇到的问题是,如果用户对行进行分组,“

我正在使用Ag网格在我的网站上显示数据。我希望允许用户修改视图状态(更改列顺序、组行、筛选器等);保存修改后的状态;以后再恢复。我知道这是标准功能,我在这里遵循官方示例:

与示例一样,我的代码使用
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
    应用顺序,将自动分组列置于末尾。感谢您让我知道!这并不理想,但我会尝试测试您提出的解决方案-目前这可能已经足够好了。感谢您让我知道!这并不理想,但我将尝试测试您提出的解决方案——目前这可能已经足够好了。