在 ag-Grid 中,如果使用 immutableData 属性进行行的更新,需要确保在每次更新后都返回一个全新的对象。否则,由于对象的引用没有改变,ag-Grid 无法检测到更新,因此视图将不会更新。
以下是一个示例代码,用于演示如何使用 immutableData 属性更新 detail-grid 行:
var gridOptions = {
// ...
masterDetail: true,
detailCellRendererParams: {
// 使用 immutableData 属性
immutableData: true,
// 定义子表格的列
columns: [
{ headerName: "Product", field: "product" },
{ headerName: "Quantity", field: "quantity" },
{ headerName: "Price", field: "price" }
],
// 定义子表格的数据
getDetailRowData: function(params) {
var dataToUpdate = params.data;
// 创建一个全新的对象来更新数据
var updatedData = {
product: dataToUpdate.product,
quantity: dataToUpdate.quantity + 1,
price: dataToUpdate.price
};
// 将更新过的数据返回给 ag-Grid
params.successCallback([updatedData]);
}
},
// ...
};
在上面的示例中,我们使用了 immutableData 属性,并确保在每次更新后都返回一个全新的对象。如果您需要更新多个字段,那么需要为每个字段都创建一个新的对象。这样,ag-Grid 就能够检测到更新并更新视图了。