在ag网格反应中排序时修复一行

问题描述 投票:0回答:1

有一个下拉列表,根据下拉列表的值,我在这里对 ag 网格进行排序,但我想在使用 id 956306 进行排序时修复顶部的一行,我怎样才能实现它呢??

const handleApplyQuickSort = (selectedSort: string) => {
    const colId = SORT_MAP[selectedSort];
    if (colId && gridRef.current) {
      gridRef.current?.columnApi?.applyColumnState({
        state        : [{ colId: colId, sort: 'desc' }],
        defaultState : { sort: null },
      });
      initialSortAppliedRef.current = true;
      const rowIndexToKeepOnTop = gridRef?.current?.props?.rowData?.findIndex((row:UIModel) => String(row.id) === '956306');
      if (rowIndexToKeepOnTop !== -1 && rowIndexToKeepOnTop) {
        const rowToKeepOnTop = gridRef?.current?.props?.rowData?.splice(rowIndexToKeepOnTop, 1)[0];
        gridRef?.current?.props?.rowData?.unshift(rowToKeepOnTop);
      }    
    }
  };
javascript reactjs grid ag-grid ag-grid-react
1个回答
0
投票

使用比较器进行自定义排序像这样

const gridOptions = {
    columnDefs: [
        {
            field: 'age',
            // simple number comparator
            comparator: (valueA, valueB, nodeA, nodeB, isDescending) => valueA - valueB
        },
        {
            field: 'name',
            // simple string comparator
            comparator: (valueA, valueB, nodeA, nodeB, isDescending) => {
                if (nodeA.data.id === '956306') return -Number.NEGATIVE_INFINITY;
                if (valueA == valueB) return 0;
                return (valueA > valueB) ? 1 : -1;
            }
        }
    ],

    // other grid options ...
}
© www.soinside.com 2019 - 2024. All rights reserved.