Ryan Pierce Williams
Ryan Pierce Williams

Reputation: 1004

How Do I Generate RowId For Intermediate Group Rows?

I am working on implementing grouping w/ the Server Side Row Model. I need to generate an appropriate ID for the intermediate group rows. For example, if I group by Status then I would have intermediate rows representing each Status (NEW, IN PROGRESS, COMPLETE, etc). I need to come up with a unique ID for these rows (but preferable something deterministic if they need to be accessed/updated later).

The getRowId function is passed an object that contains things like the row's data, the previous parent group values, a reference to the api, etc.

What I would ideally like to know is the current list of group fields... I have all of the values readily accessible, but I don't know what field the current row is being grouped by - else I could just go grab that field from the row's data to use as part of the row id...

Is there any good way to acquire this information?

Upvotes: 1

Views: 1177

Answers (1)

Andrew Glazier
Andrew Glazier

Reputation: 159

The columnApi exposes the 'getRowGroupColumns' function from which the field property can be deduced:

getRowId: ({ columnApi, data, level, parentKeys = [] }) => {
  const groupColumns = columnApi.getRowGroupColumns();
  if (groupColumns.length > level) {
    const field = groupColumns[level].getColDef().field;
    return [...parentKeys, data[field]].join('-');
  }
  return [...parentKeys, data.athlete, data.year];
},

Upvotes: 2

Related Questions