【问题标题】:AG Grid - restore default sort if no other column is sortedAG Grid - 如果没有其他列被排序,则恢复默认排序
【发布时间】:2019-12-03 18:37:50
【问题描述】:

我的 ag-grid 有一个默认排序 this.options.defaultSortColumn,一旦初始化,数据就会按此排序。现在,当用户按另一列排序然后再次删除排序(通过单击标题 3 次)时,我想恢复默认排序并再次按默认列对数据进行排序。我尝试了以下方法:

postSort () {
  if (this.gridApi) {
    let currentSort = this.gridApi.getSortModel()
    console.log(currentSort)
    if (this.options.defaultSortColumn && currentSort && currentSort.length === 0) {
      // reset default sort, if no other sort is active
      this.gridApi.setSortModel({
        colId: this.options.defaultSortColumn,
        sort: (this.options.defaultSortDir || 'asc').toLowerCase()
      })
    }
  }
}

但这会导致Maximum call stack size exceeded,我认为是因为它设置了排序,然后在getSortModel() 更新之前再次运行postSort 事件,所以它只是一遍又一遍地调用事件。难道我做错了什么?或者当没有其他列排序时,是否有其他方法可以恢复默认排序?

【问题讨论】:

  • 你在哪里使用这个 postSort 方法?在每一列上??
  • @NagaSaiA 不,我在网格本身的 gridOptions 中有它,所以<ag-grid-vue :postSort="postSort">
  • on 选项是在加载到变量时设置默认排序模型(比如 defaultSort)并使用 onSortChanged 网格 API 事件并检查 currentSort.length 并使用 this.gridApi.setSortModel(defaultSort) 设置默认排序而不是使用 postSort
  • onSortChanged: (e) => { console.log(e.api.getSortModel()) }
  • 发布 cmets 作为步骤的答案,问题在于每行多次调用的 postSort

标签: javascript sorting vue.js ag-grid


【解决方案1】:

总结一下,因为发生了一些混乱。 setSortModel 函数应该有一个数组作为参数而不是一个对象。

正确方法(React 示例)

  <AgGridReact onSortChanged={e => {
     if (!e.api.getSortModel().length) {
       e.api.setSortModel([
         {
          colId: 'columnId',
          sort: 'desc' // 'asc'
         }  
       ])
     }   
   }

【讨论】:

    【解决方案2】:

    您还可以将 gridOptions 状态重置为初始化网格时的状态。

    this.gridColumnApi.resetColumnState();
    

    来自文档 -

    resetColumnState() - 将状态设置回原来的状态 提供了列定义。

    【讨论】:

      【解决方案3】:

      要达到预期的结果,请使用下面的 ag 网格事件 - onSortChanged 并检查当前排序的长度

      1. 在加载时将默认排序分配给变量(比如 defaultSort)
      2. 使用 onSortChanged 网格 API 事件,检查当前排序长度

        onSortChanged: (e) =&gt; { console.log(e.api.getSortModel()) }

      3. 如果长度为0,则使用this.gridApi.setSortModel(defaultSort)设置默认排序

      【讨论】:

        猜你喜欢
        • 2021-12-16
        • 2019-12-29
        • 2018-01-20
        • 1970-01-01
        • 1970-01-01
        • 2016-04-11
        • 2014-09-22
        • 1970-01-01
        • 2017-06-03
        相关资源
        最近更新 更多