代码之家  ›  专栏  ›  技术社区  ›  ViqMontana

AG网格:动态启用/禁用单元格编辑(基于另一个字段)

  •  0
  • ViqMontana  · 技术社区  · 6 年前

    我在角度上使用ag网格,使用整行编辑。我想基于另一个字段禁用对其中一个字段的编辑,但我想在另一个字段的值更改时(不要在编辑停止后)立即禁用/启用该字段。

    我在这里用一个简单的例子重新创建了我的场景:如果 ID 值大于0,请启用 Value 字段,否则,禁用 价值 字段。

    <div style="width: 200px;">
        <ag-grid-angular #agGrid style="height: 200px;" class="ag-theme-fresh" [gridOptions]="gridOptions">
        </ag-grid-angular>
    </div>
    
    @Component({
        selector: 'app-my-grid-application',
        templateUrl: './my-grid-application.component.html'
    })
    export class MyGridApplicationComponent {
        private gridOptions: GridOptions;
    
        constructor() {
            this.gridOptions = <GridOptions>{
              enableSorting: true,
              // enable filtering 
              enableFilter: true
            };
            this.gridOptions.columnDefs = [
                {
                    headerName: "ID",
                    field: "id",
                    width: 100,
                    editable: true
                },
                {
                    headerName: "Value",
                    field: "value",
                    width: 100,
                    editable: true
                },
    
            ];
            this.gridOptions.rowData = [
                {id: 5, value: 10},
                {id: 10, value: 15},
                {id: 15, value: 20}
            ]
            this.gridOptions.rowSelection='single';
            this.gridOptions.editType='fullRow';
        }
    }
    

    Here 是对我问题的轻率抨击。

    我怎样才能做到这一点呢?我正在使用一个计算来获得价值的路线。 身份证件 每次更改都会保存值,而不是刚输入的值。我还尝试了ag grid提供的许多事件挂钩,比如 rowValueChanged rowEditingStopped 但是,只有当您停止编辑时才调用它们,而不是在某些内容发生更改时调用它们。

    1 回复  |  直到 6 年前
        1
  •  0
  •   un.spike    6 年前

    你可以这样处理:

    editable: (params)=>{return params.data["id"]>0}
    

    但这种情况并不像您所期望的那样完美地工作(可编辑函数将只在编辑开始事件时执行,而编辑它不会跟踪您的更改)

    为了充分处理您的需求,您必须创建自定义 cellEditors 用于“实时”更改中的验证

    你可以查一下 this post 获取有关验证的更多信息