答案 0 :(得分:1)
为了能够通过ag-Grid API的setRowData
方法设置数据,必须确保任何一个数据输入在其他数据之间都是一致的。
您可以尝试考虑以下解决方法。
后端数据转换
如果您完全可以控制后端API,则可能会以最适合您的方式将数据直接发送回客户端。
从setRowData
分离设置数据的过程
您可能想通过数据网格为组件引入一些其他方法,例如一个用于设置projectId
和projectName
,另一个用于设置calendarValues
。 ag-Grid docs提供了多达4种不同的数据更新方式。
为每列定义自定义valueGetter
您可以尝试通过引入自定义columnDefs
来修改valueGetter
的定义,该自定义 const columnDefs = [
{
headerName: "Febrero2019",
field: "Febrero2019",
valueGetter({ data: { calendarValues } }) {
return calendarValues['Febrero2019'];
}
},
];
将负责提取适当的值,例如
api.setRowData
const colDefs = [
{ headerName: 'Codigo', field: 'projectId' },
{ headerName: 'Nombre', field: 'projectName' },
{ headerName: 'Febrero2019', field: 'Febrero2019' },
{ headerName: 'Marzo2019', field: 'Marzo2019' }
];
const projectData = {
calendarValues: [
{ date: 'Febrero2019', value: 0 },
{ date: 'Marzo2019', value: 0 },
],
projectId: 'SomeId',
projectName: 'SomeName'
};
const processData = ({ projectId, projectName, calendarValues }) => ({
projectId,
projectName,
...calendarValues.reduce((calendar, { date, value }) => ({ ...calendar, [date]: value }), {})
});
方法可接受的数据格式的过程。processData
所以调用{
Febrero2019: 0
Marzo2019: 0
projectId: "SomeId"
projectName: "SomeName"
}
将产生所需的数据格式。
{{1}}