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

AG-Grid React 自定义默认排序实现指定类型行置顶方法咨询

AG Grid 自定义排序实现指定行置顶方案

核心实现思路

通过AG Grid提供的自定义排序能力覆写默认排序逻辑,为指定的program+对应值组合分配优先级权重,权重越小的组合排序越靠前,未命中规则的行统一放在末尾。

具体实现方案

方案1:仅在program列排序时生效

适合仅需要按program列排序时触发置顶规则的场景,通过列定义的comparator属性实现:

  • 定义优先级映射表,命中规则的组合分配小权重,未命中的统一分配大权重
  • 在program列的配置中添加自定义比较器,按权重排序,权重相同的走默认兜底排序
  • 配置初始排序模型,实现页面加载后默认按该规则排序

代码示例

// 优先级映射:key为`program值|对应值`的组合,值越小排序越靠前
const priorityMap = {
  'green|X': 1,
  'blue|Y': 2,
  'yellow|Z': 3
}
// 未命中规则的行默认权重,保证排在最后
const DEFAULT_PRIORITY = 999

const columnDefs = [
  {
    field: 'program',
    headerName: '项目类型',
    // 自定义排序比较器
    comparator: (valueA, valueB, rowA, rowB) => {
      // 请将下方的targetValue替换为你业务中“对应值”的实际字段名
      const keyA = `${valueA}|${rowA.targetValue}`
      const keyB = `${valueB}|${rowB.targetValue}`
      
      const priorityA = priorityMap[keyA] ?? DEFAULT_PRIORITY
      const priorityB = priorityMap[keyB] ?? DEFAULT_PRIORITY
      
      // 优先按权重排序
      if (priorityA !== priorityB) {
        return priorityA - priorityB
      }
      // 权重相同时的兜底排序,可根据业务调整
      return valueA.localeCompare(valueB)
    }
  },
  // 其他列配置省略
]

const gridOptions = {
  columnDefs,
  // 配置初始默认排序,页面加载后自动触发该排序规则
  initialSortModel: [
    { colId: 'program', sort: 'asc' }
  ]
}

注意:如果你的“对应值”和program是同一个字段的属性,可直接调整key的生成逻辑匹配你的业务字段即可。

方案2:全局永久生效置顶规则

适合无论用户按任意列排序,都需要保留指定行置顶的场景,通过postSort全局回调实现:

const priorityMap = {
  'green|X': 1,
  'blue|Y': 2,
  'yellow|Z': 3
}
const DEFAULT_PRIORITY = 999

const gridOptions = {
  columnDefs: [/* 你的列配置 */],
  // 全局排序后回调,统一调整行顺序
  postSort: (rowNodes) => {
    rowNodes.sort((rowA, rowB) => {
      const keyA = `${rowA.data.program}|${rowA.data.targetValue}`
      const keyB = `${rowB.data.program}|${rowB.data.targetValue}`
      const priorityA = priorityMap[keyA] ?? DEFAULT_PRIORITY
      const priorityB = priorityMap[keyB] ?? DEFAULT_PRIORITY
      return priorityA - priorityB
    })
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:27:05