农业网格主细节中的 CellValueChanged 事件
CellValueChanged event in master detail of ag-grid
我正在开发一个 master-detail 设置为 true 的 ag-grid,master-detail 的第一行有一个可编辑的单元格,即 "contractID",我想填充 master-detail 的其他单元格,具体取决于根据获取的合同 ID。
我尝试在 columnDef 中添加 cellValueChanged 并尝试在 detailGrid 的 onFirstDataRendered 方法中显式设置 params.api.rowModel.gridApi.cellValueChanged,但没有成功。
主从网格代码:
detailCellRendererParams = {
detailGridOptions: {
columnDefs: [
{ headerName: "Contact ID", field: "contractId", editable: true, [cellValueChanged]: "cellValueChanged()" },
{ headerName: "Contact Name", field: "contractName" },
{ headerName: "Category", field: "category" }]
}
}
onFirstDataRendered(params) {
params.api.rowModel.gridApi.cellValueChanged = function (params) {
console.log("cellChanged");
}
}
修复了使用自定义 cellRenderer 的问题,并为更改事件添加了一个 eventListener。我只是想在网格的第一行具有此功能,因此向 rowIndex 添加了一个条件。
detailCellRendererParams = {
detailGridOptions: {
columnDefs: [{headerName: "Contact ID",field: "contractId",editable: true,
cellRenderer: (params) => {
params.eGridCell.addEventListener('change', (e) => {
this.getDetails(e.target.value);
})
},
{headerName: "Contact Name", field: "contractName"},
{headerName: "Category",field: "category"}]
}
}
getDetails(id): void {
this.apiService.getDetails(id)
.subscribe(result => {
this.gridApi.detailGridInfoMap.detail_0.api.forEachNode(node=> {
if(node.rowIndex == 0){
node.data = result;
node.gridApi.refreshCells();
}}
);
})}
如果还有人疑惑,在详细的GridOptions中添加:
onCellValueChanged: function ($event) {
// your code here
},
每次更改单元格值时都会触发此事件。
我正在开发一个 master-detail 设置为 true 的 ag-grid,master-detail 的第一行有一个可编辑的单元格,即 "contractID",我想填充 master-detail 的其他单元格,具体取决于根据获取的合同 ID。
我尝试在 columnDef 中添加 cellValueChanged 并尝试在 detailGrid 的 onFirstDataRendered 方法中显式设置 params.api.rowModel.gridApi.cellValueChanged,但没有成功。
主从网格代码:
detailCellRendererParams = {
detailGridOptions: {
columnDefs: [
{ headerName: "Contact ID", field: "contractId", editable: true, [cellValueChanged]: "cellValueChanged()" },
{ headerName: "Contact Name", field: "contractName" },
{ headerName: "Category", field: "category" }]
}
}
onFirstDataRendered(params) {
params.api.rowModel.gridApi.cellValueChanged = function (params) {
console.log("cellChanged");
}
}
修复了使用自定义 cellRenderer 的问题,并为更改事件添加了一个 eventListener。我只是想在网格的第一行具有此功能,因此向 rowIndex 添加了一个条件。
detailCellRendererParams = {
detailGridOptions: {
columnDefs: [{headerName: "Contact ID",field: "contractId",editable: true,
cellRenderer: (params) => {
params.eGridCell.addEventListener('change', (e) => {
this.getDetails(e.target.value);
})
},
{headerName: "Contact Name", field: "contractName"},
{headerName: "Category",field: "category"}]
}
}
getDetails(id): void {
this.apiService.getDetails(id)
.subscribe(result => {
this.gridApi.detailGridInfoMap.detail_0.api.forEachNode(node=> {
if(node.rowIndex == 0){
node.data = result;
node.gridApi.refreshCells();
}}
);
})}
如果还有人疑惑,在详细的GridOptions中添加:
onCellValueChanged: function ($event) {
// your code here
},
每次更改单元格值时都会触发此事件。