【问题标题】:how to disable editing for only some rows in ag grid如何仅对 ag 网格中的某些行禁用编辑
【发布时间】:2018-10-20 19:14:49
【问题描述】:

我只想根据条件启用我的 ag-grid(例如:2/5)中的某些行。

editable:false 无能为力,因为它应用于整个列表,除非有我不知道的方法

请帮忙

【问题讨论】:

    标签: angularjs ag-grid


    【解决方案1】:

    您可以将function 绑定到columnDef 中的editable 属性,这将在每次尝试edit 时执行

    editable: this.checkEditFunction.bind(this)
    ...
    checkEditFunction(params){
        //params.node - for row identity
        //params.column - for column identity
        return !params.node.isRowPinned() // - just as sample
    }
    

    .bind(this) - 仅用于外部功能的可访问性

    【讨论】:

      【解决方案2】:

      检查条件后可以调用gridApistopEditing()方法——保持editable: true

      假设,您正在编辑该行,

      (rowEditingStarted)="onRowEditingStarted($event)"
      

      然后在您的组件中,您可以根据以下检查停止编辑。

      private onRowEditingStarted($event) {
        if(!$event.data.propertyToCheck == <someCondition>) {
          this.gridApi.stopEditing();
      }
      

      更新:

      您必须更新编辑事件的模板。

      <ag-grid-angular #agGrid
        ....
       (rowEditingStarted)="onRowEditingStarted($event)"
        ....
       ></ag-grid-angular>
      </div>
      

      查看此示例以供参考:https://www.ag-grid.com/javascript-grid-cell-editing/#example-cell-editing

      【讨论】:

      • 你能告诉我我们是否应该这样声明它 model.columns = [ {checkboxSelection: enableEdition, editable: true rowEditingStarted:onRowEditingStarted($event) }]
      • var onRowEditingStarted=function($event) { if($event.data.x === model.x) { this.gridApi.stopEditing(); } };
      • 我不认为我可以这样做,因为我在 angularJS 1.5 中
      • 注意:我需要使用cellEditingStarted 而不是rowEditingStarted,因为我没有使用全行编辑
      猜你喜欢
      • 2020-08-28
      • 2011-12-05
      • 2013-01-30
      • 2014-12-16
      • 2015-09-02
      • 1970-01-01
      • 2010-12-27
      • 2012-10-18
      • 1970-01-01
      相关资源
      最近更新 更多