Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular ag网格:基于同一行上其他单元格中的内容禁用单元格_Angular_Ag Grid - Fatal编程技术网

Angular ag网格:基于同一行上其他单元格中的内容禁用单元格

Angular ag网格:基于同一行上其他单元格中的内容禁用单元格,angular,ag-grid,Angular,Ag Grid,我正在寻找有关我将使用ag grid实现的功能的帮助。 他是个笨蛋 我有一个包含X项和3列的表。在第一列中,我有一些只读文本,在第二列和第三列中,我有自定义的cellEditor(单击会显示一个下拉菜单) 目标:我希望默认情况下禁用第三列中的单元格(单击时,不显示下拉列表),并且仅当同一行第二列中的单元格具有值(从下拉列表中选择了一个项目)时,才会显示下拉列表(在第三列中的单元格中) 示例:第1行:第1列具有值(默认情况下),用户从第2列的下拉列表中选择一项。然后,也只有这样,他才能从第三列的下

我正在寻找有关我将使用ag grid实现的功能的帮助。 他是个笨蛋

我有一个包含X项和3列的表。在第一列中,我有一些只读文本,在第二列和第三列中,我有自定义的
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;
    }