Javascript 使用ag栅格在未定义字段上编辑列
我已经为如下列定义配置了ag网格Javascript 使用ag栅格在未定义字段上编辑列,javascript,angular,ag-grid,ag-grid-ng2,Javascript,Angular,Ag Grid,Ag Grid Ng2,我已经为如下列定义配置了ag网格 { headerName: 'Model Level', field: 'ModelLevelTimeSeries.Id.Value', editable: false, cellRendererFramework: RenderEntityComponent, cellStyle: { textAlign: "center" }, suppressSizeT
{
headerName: 'Model Level',
field: 'ModelLevelTimeSeries.Id.Value',
editable: false,
cellRendererFramework: RenderEntityComponent,
cellStyle: { textAlign: "center" },
suppressSizeToFit: true,
}
基本上,后端的字段可以返回null
"ModelLevelTimeSeries": {
"Id": null
}
或
当我编辑单元格值时,对于agInit
方法中的params.value
,它返回null
。我使用的是“ag网格”:“^17.0.0”,
“ag grid angular”:“^17.0.0”。只需在列定义中添加CellrNoder函数即可
cellRenderer: params => params.value ? params.value : ''
现在就是这样
{
headerName: 'Model Level',
field: 'ModelLevelTimeSeries.Id.Value',
editable: false,
//add below line
cellRenderer: params => params.value ? params.value : ''
cellRendererFramework: RenderEntityComponent,
cellStyle: { textAlign: "center" },
suppressSizeToFit: true,
}
您可以将值设置器用于您的文件
{
headerName: 'Model Level',
field: 'ModelLevelTimeSeries.Id.Value',
editable: false,
cellRendererFramework: RenderEntityComponent,
cellStyle: { textAlign: "center" },
suppressSizeToFit: true,
valueSetter: function(params: any){
if (params.oldValue !== params.newValue) {
params.data[params.colDef.field] = (params.newValue) !== "" ? params.newValue.toUpperCase() : "";
return true;
}
else {
return false;
}
}
}
根据我的经验,如果字段为.a.nested.key,则在valueSetter中使用params.data[params.colDef.field]将不起作用,因为params.colDef.field只返回类似“ModelLevelTimeSeries.Id.Value”的字符串 目前,我依靠lodash的set()在valueSetter中实现这一点:
import * as set from 'lodash/set'
changeDetectValueSetter (params) {
if (params.oldValue !== params.newValue) {
set(params.data, params.colDef.field, params.newValue) // had to use lodash set, because params.colDef.field is a string representation of a nested object key
// params.data.instruction.billingrecord.invoice_number = params.newValue // could have done this, but it's fixed for that field.
// params.data[params.colDef.field] = params.newValue // this does not work at all if the field is.a.nested.key
return true
} else {
return false
}
},
这对你有用吗??
import * as set from 'lodash/set'
changeDetectValueSetter (params) {
if (params.oldValue !== params.newValue) {
set(params.data, params.colDef.field, params.newValue) // had to use lodash set, because params.colDef.field is a string representation of a nested object key
// params.data.instruction.billingrecord.invoice_number = params.newValue // could have done this, but it's fixed for that field.
// params.data[params.colDef.field] = params.newValue // this does not work at all if the field is.a.nested.key
return true
} else {
return false
}
},