【问题标题】:Switch between editable and non editable mode in ag-grid在 ag-grid 中切换可编辑和不可编辑模式
【发布时间】:2018-01-03 02:21:53
【问题描述】:

我正在使用 ag-grid 来显示和修改数据。如何在孔 ag-grid 的可编辑和不可编辑之间切换。我可以用 grid api 来做这个吗?

这是我的默认配置:

this.defaultDefs = {           
    suppressMovable: true,     
    enableColResize: true,     
    editable: true,            
};     

我可以动态更改可编辑内容吗?

【问题讨论】:

    标签: ag-grid ag-grid-ng2


    【解决方案1】:

    editable 可以是布尔值,也可以是函数

    如果您使用函数形式,您可以逐个单元格确定是否希望给定单元格可编辑

    editable: function(params) {
       return true; // true/false based on params (or some other criteria) value
    }
    

    【讨论】:

    • thx 我会试试这个功能是否会影响始终不可编辑的列我有相同的列,我指定可编辑:false 这个功能会影响他们
    • 您也可以按列设置可编辑 - 这将覆盖 defaultDefs 上的设置
    • 因此,如果 defaultDefs 得到一个函数或布尔值,它将始终被覆盖
    • 不,我的意思是 detaultCols 上的任何设置都可以逐列覆盖。在 defaultDefs 上设置任何默认值(比如不可编辑),然后根据需要逐列覆盖。请注意,列的默认设置是不可编辑
    【解决方案2】:

    您可以通过自己的方式设置可编辑属性,只需创建另一个函数 isEditable(columnName) 即可为您提供布尔结果。

    this.defaultDefs = {           
        suppressMovable: true,     
        enableColResize: true,     
        editable: isEditable(column),            
    };  
    

    【讨论】:

      【解决方案3】:

      cellEditingStarted 回调中进行逻辑检查,检查失败时调用stop()。您可能需要编写一些 css 来设置样式或添加 toast/通知以向用户提供有关他们无法编辑的原因的反馈。

      【讨论】:

      • 这样做的一个副作用是编辑界面会在开始/取消编辑之间短暂闪烁,最好对可编辑属性使用回调,这样你就可以完全阻止进入编辑模式如果需要,可以逐个单元格地进行
      【解决方案4】:

      你可以这样使用它:

      1. 可编辑:(参数)=> 你的逻辑
      2. 更新日期
      3. 调用 api.redrawRows({ rowNodes: [node] })

      【讨论】:

        猜你喜欢
        • 2019-01-10
        • 2018-10-24
        • 1970-01-01
        • 2016-10-29
        • 2016-07-04
        • 2017-05-29
        • 2019-08-16
        • 2020-12-16
        • 1970-01-01
        相关资源
        最近更新 更多