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

ag-grid-vue企业版32.1.0:服务端排序时重置分页至第1页的方法

解决方案

你可以通过监听AG Grid的sortChanged事件,在排序发生变化时主动将分页重置到第一页,具体实现如下:

方法一:监听排序变化事件重置分页

在Vue组件中给ag-grid-vue绑定sortChanged事件,调用Grid API的paginationGoToPage方法跳转到第一页(AG Grid分页索引从0开始,第一页对应索引0):

<template>
  <ag-grid-vue
    :columnDefs="columnDefs"
    :rowModelType="rowModelType"
    :pagination="true"
    :paginationPageSize="paginationPageSize"
    :gridOptions="gridOptions"
    @sort-changed="onSortChanged"
    <!-- 其他必要属性 -->
  ></ag-grid-vue>
</template>

<script setup>
import { ref, onMounted } from 'vue';
import 'ag-grid-enterprise';

const gridApi = ref(null);
const rowModelType = ref('serverSide');
const paginationPageSize = ref(10);
const columnDefs = ref([
  // 你的列定义配置
]);
const gridOptions = ref({
  serverSideDatasource: {
    getRows(params) {
      // 服务端请求逻辑,此时params的startRow/endRow已重置为第一页范围
      fetch('/your-api-path', {
        method: 'POST',
        body: JSON.stringify({
          startRow: params.startRow,
          endRow: params.endRow,
          sortModel: params.sortModel,
          filterModel: params.filterModel
        })
      })
      .then(res => res.json())
      .then(data => {
        params.success({
          rowData: data.rows,
          rowCount: data.totalCount
        });
      })
      .catch(err => params.fail());
    }
  }
});

const onSortChanged = () => {
  gridApi.value?.paginationGoToPage(0);
};

onMounted(() => {
  gridApi.value = gridOptions.value.api;
});
</script>

方法二:在getRows中手动修正分页参数(备选)

若不想通过事件监听,也可在getRows方法中检测排序模型变化,手动重置分页参数:

gridOptions.value = {
  context: { lastSortModel: [] },
  serverSideDatasource: {
    getRows(params) {
      const lastSortModel = params.context.lastSortModel;
      const currentSortModel = params.sortModel;
      const sortChanged = JSON.stringify(lastSortModel) !== JSON.stringify(currentSortModel);

      if (sortChanged) {
        params.startRow = 0;
        params.endRow = paginationPageSize.value;
        params.context.lastSortModel = currentSortModel;
      }

      // 后续服务端请求逻辑,使用修正后的分页参数
      fetch('/your-api-path', {
        method: 'POST',
        body: JSON.stringify({
          startRow: params.startRow,
          endRow: params.endRow,
          sortModel: params.sortModel,
          filterModel: params.filterModel
        })
      })
      .then(res => res.json())
      .then(data => {
        params.success({
          rowData: data.rows,
          rowCount: data.totalCount
        });
      })
      .catch(err => params.fail());
    }
  }
};

注意:第一种方法更符合AG Grid官方推荐,通过API控制分页能自动同步Grid的分页状态,避免手动修改参数可能引发的状态不一致问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 11:06:04