最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - ag-grid-react: getSortModel is not a function - Stack Overflow

programmeradmin3浏览0评论

I'm trying to get sort model from ag-grid-react ponent using getSortModel() but I'm getting getSortModel is not a function

my code

 onSortChanged={useCallback(e => console.log(e.api.getSortModel(), 'im from sort'))}

"@ag-grid-munity/react": "27.3.0", "@ag-grid-enterprise/all-modules": "27.3.0",

I'm trying to get sort model from ag-grid-react ponent using getSortModel() but I'm getting getSortModel is not a function

my code

 onSortChanged={useCallback(e => console.log(e.api.getSortModel(), 'im from sort'))}

"@ag-grid-munity/react": "27.3.0", "@ag-grid-enterprise/all-modules": "27.3.0",

Share Improve this question edited Jun 16, 2022 at 2:39 KARTHIKEYAN.A asked Jun 16, 2022 at 2:30 KARTHIKEYAN.AKARTHIKEYAN.A 20.1k10 gold badges136 silver badges149 bronze badges 1
  • check this answer – Usama Commented Jun 16, 2022 at 13:10
Add a ment  | 

3 Answers 3

Reset to default 10

After spend some time found params.api.getSortModel() is deprecated after version 24.0.0.

Using Column state for get Sort model and set Sort model in the following way

getSortModel:

   const onSortChanged = useCallback(() => {
        const value = gridParams.columnApi.getColumnState().find(s => s.sort != null)
        if (value) {
            setSortModel([ value ])
        } else {
            setSortModel([])
        }
    }, [ gridParams, setSortModel ])

setSortModel:

useEffect(() => {
    if (sortModel.length > 0) {
       const curretSortModel = gridParams.columnApi.getColumnState()
       const mergeSortModel = curretSortModel.map(o1 => sortModel.find(o2 => o2.colId === o1.colId) || o1)
       gridParams.columnApi.setColumnState(mergeSortModel)
     }
}, [gridParams, sortModel]

we are setting gridParems using onGridReady() method

const [ gridParams, setGridParams ] = useState()


const onGridReady = useCallback(params => {
    setGridParams(params)
}, [])


<Grid
    onGridReady={onGridReady} // using this we are setting gridParams
    rowData={dataset}
    floatingFilter
    sideBar={GRID_SIDE_BAR}
    onSelectionChanged={getSelectedRowData}
    enableSelect={true}
    onFilterChanged={onFilterChanged}
    onSortChanged={onSortChanged}
    rowSelection={'multiple'}
    licenseKey={'test'}
    getRowId={getRowNodeId}
    onColumnVisible={onColumnVisible}
    onColumnResized={onColumnResized}
    onColumnMoved={onColumnMoved}
    columnDefs={mappedColDefs}
    defaultColDef={defaultColDef}
    cacheQuickFilter={true}
    frameworkComponents={{
        customLoadingOverlay: () => <Paper><Typography>Please wait while your requests are loading...</Typography></Paper>,
        customNoRowsOverlay: () => <Paper><Typography>No requests found</Typography></Paper>
    }}
    loadingOverlayComponent={'customLoadingOverlay'}
    noRowsOverlayComponent={'customNoRowsOverlay'}
/>

As per this plunkr, you can retrieve and apply sort with the following example: https://plnkr.co/edit/?open=index.jsx&preview

 const sortByAthleteDesc = useCallback(() => {
    gridRef.current.columnApi.applyColumnState({
      state: [{ colId: 'athlete', sort: 'desc' }],
      defaultState: { sort: null },
    });
  }, []);


  const saveSort = useCallback(() => {
    var colState = gridRef.current.columnApi.getColumnState();
    var sortState = colState
      .filter(function (s) {
        return s.sort != null;
      })
      .map(function (s) {
        return { colId: s.colId, sort: s.sort, sortIndex: s.sortIndex };
      });
    savedSort = sortState;
    console.log('saved sort', sortState);
  }, []);

For Vue JS :

const onSortChanged = () => {
  window.colState = gridApi.value.getColumnState();
  let newSortedState = window.colState
    .filter(function (s) {
      return s.sort != null;
    })
    .map(function (s) {
      return { colId: s.colId, sort: s.sort, sortIndex: s.sortIndex };
    });
  console.log('column state saved', newSortedState);
};

Template:

<ag-grid-vue
    :gridOptions="gridOptions"
    :columnDefs="props?.columns"
    :icons="icons"
    :rowHeight="props?.rowHeight"
    style="height: 500px"
    :enableRangeSelection="false"
    :rowSelection="'multiple'"
    :rowMultiSelectWithClick="false"
    class="ag-theme-quartz"
    :paginationPageSizeSelector="[3, 5, 10, 15, 25, 50]"
    :sideBar="sideBar"
    @grid-ready="handleGridReady"
    @selection-changed="handleSelectionChange"
    :defaultColDef="props?.defaultColDef"
    @sortChanged="onSortChanged"
    :rowModelType="rowModelType"
    :pagination="true"
    :paginationPageSize="paginationPageSize"
    @filter-changed="onFilterChanged"
  />
发布评论

评论列表(0)

  1. 暂无评论