You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为AgGridReact的myDate列设置默认升序排序?

AgGridReact 日期列默认升序排序问题解决

问题说明

使用AgGridReact时,尝试为myDate列(格式MM/DD/YYYY)设置默认升序排序,调用setSortModel时出现错误:params.api.setSortModel is not a function。相关代码如下:

组件代码

<AgGridReact
  onGridReady={onGridReady}
  columnDefs={columnDefs}
  rowData={pipelineData}
  gridOptions={gridOptions}
  onCellClicked={onCellClicked}
/>

列定义

const columnDefs = [
  // 其他列配置
  {
    headerName: 'My Date',
    field: 'myDate',
    unSortIcon: true,
    sortable: true,
    filter: true,
    resizable: true,
    suppressMenu: false,
    wrapText: true,
    autoHeight: true,
  }
];

失败的尝试代码

const onGridReady = (params: any) => {
  setGridApi(params.api);
  setGridColumnApi(params.columnApi);
  params.api.sizeColumnsToFit();

  const sort = [
    {
      colId: "myDate",
      sort: "asc",
    },
  ];

  params.api.setSortModel(sort); // 此处报错
};

解决方法

1. 直接在列定义中配置默认排序

这是最简洁的方式,无需额外API调用,直接在目标列的配置中添加sort: 'asc':

const columnDefs = [
  // 其他列配置
  {
    headerName: 'My Date',
    field: 'myDate',
    unSortIcon: true,
    sortable: true,
    filter: true,
    resizable: true,
    suppressMenu: false,
    wrapText: true,
    autoHeight: true,
    sort: 'asc' // 新增此行设置默认升序
  }
];

2. 使用columnApi.applyColumnState替代旧API

setSortModel是AgGrid旧版本的API,新版本已废弃,改用applyColumnState来设置列排序状态:

const onGridReady = (params: any) => {
  setGridApi(params.api);
  setGridColumnApi(params.columnApi);
  params.api.sizeColumnsToFit();

  params.columnApi.applyColumnState({
    state: [
      { colId: 'myDate', sort: 'asc' }
    ],
    defaultState: { sort: null } // 其他列默认不启用排序
  });
};

3. 通过gridOptions预配置排序模型

在gridOptions中直接定义sortModel,组件初始化时会自动应用该排序规则:

const gridOptions = {
  // 其他网格配置项
  sortModel: [
    { colId: 'myDate', sort: 'asc' }
  ]
};

内容的提问来源于stack exchange,提问作者Ar_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 16:46:20