Angular ag网格:基于同一行上其他单元格中的内容禁用单元格
我正在寻找有关我将使用ag grid实现的功能的帮助。 他是个笨蛋 我有一个包含X项和3列的表。在第一列中,我有一些只读文本,在第二列和第三列中,我有自定义的Angular ag网格:基于同一行上其他单元格中的内容禁用单元格,angular,ag-grid,Angular,Ag Grid,我正在寻找有关我将使用ag grid实现的功能的帮助。 他是个笨蛋 我有一个包含X项和3列的表。在第一列中,我有一些只读文本,在第二列和第三列中,我有自定义的cellEditor(单击会显示一个下拉菜单) 目标:我希望默认情况下禁用第三列中的单元格(单击时,不显示下拉列表),并且仅当同一行第二列中的单元格具有值(从下拉列表中选择了一个项目)时,才会显示下拉列表(在第三列中的单元格中) 示例:第1行:第1列具有值(默认情况下),用户从第2列的下拉列表中选择一项。然后,也只有这样,他才能从第三列的下
cellEditor
(单击会显示一个下拉菜单)
目标:我希望默认情况下禁用第三列中的单元格(单击时,不显示下拉列表),并且仅当同一行第二列中的单元格具有值(从下拉列表中选择了一个项目)时,才会显示下拉列表(在第三列中的单元格中)
示例:第1行:第1列具有值(默认情况下),用户从第2列的下拉列表中选择一项。然后,也只有这样,他才能从第三列的下拉列表中选择一个项目。用户无法从其他行的第三列中选择项目,因为第二列为空。您可以动态处理
可编辑
模式
headerName: 'C',
field: 'c',
cellEditor: 'searchEditor',
editable: (params:IsColumnFuncParams)=>{ return params.data.b },
cellEditorParams: {
values: this.c
}
如果此列可编辑,则设置为true,否则设置为false。也可以是使不同行可编辑的函数
ag网格社区\src\ts\entities\colDef.ts
为了进一步介绍Alexerula的绝妙技巧,以下是使用可编辑的
可以做的事情:
header: 'username',
editable: (params:IsColumnFuncParams)=> { return this.canCellBeEdited(params) },
cellRenderer: 'searchEditor',
. . .
canCellBeEdited(params) {
// Don't let the user edit the "First Name" cell, if the current value is "mike".
if (params.colDef.field == 'firstName' && params.data[params.colDef.field] == 'mike') {
return false;
}
return true;
}
投赞成票,因为这实际上解决了问题。值得一提的另一个注意事项是,“editable”是一个回调函数,在编辑单元格时会被点击。起初,我以为这只会在列设置中发生一次,但是,我很高兴地说,事实并非如此。好办法!
editable?: boolean | IsColumnFunc;
export interface IsColumnFuncParams {
node: RowNode;
data: any;
column: Column;
colDef: ColDef;
context: any;
api: GridApi;
columnApi: ColumnApi;
}
header: 'username',
editable: (params:IsColumnFuncParams)=> { return this.canCellBeEdited(params) },
cellRenderer: 'searchEditor',
. . .
canCellBeEdited(params) {
// Don't let the user edit the "First Name" cell, if the current value is "mike".
if (params.colDef.field == 'firstName' && params.data[params.colDef.field] == 'mike') {
return false;
}
return true;
}