如何为Angular-JS中的特定行项声明closeCell()方法

时间:2017-06-12 12:20:46

标签: javascript angularjs kendo-ui kendo-grid

我有一个可编辑的网格,但如果符合某些要求,我想在一行的特定列中使其稳定(不可编辑),

这是我网格的代码

$scope.Grid = {
        dataSource : new kendo.data.DataSource({
            schema: {
                model: {
                    id: 'Id',
                    fields: {
                        Id:{type:'number'},
                        Name: { type: "string" },
                        Description: { type: "string" },
                        Remarks: { type: "string" },
                        ApprovalStatus: { type: "string" }

                    }
                }
            }
        }),
        selectable: true,
        sortable: true,
        resizable: true,
        scrollable: false,
        edit: edit,
        save: update, 

这些是我的编辑和更新功能

function edit(e) {
      
        e.model.Id = e.model.Id == "" ? 0 : e.model.Id;
      
        if(e.model.ApprovalStatus === 'Waiting')
        {
           $('#Grid').data("kendoGrid").closeCell();
        }
        
    }

    function update(e) {

        var Data = {
            Id: e.model.Id != "" && e.model.Id > 0 ? e.model.Id : 0,
            Name: e.model.Name,
            Description: e.model.Description,
            Remarks: e.model.Remarks,
            ApprovalStatus: e.model.ApprovalStatus
        }

        ciSetUp.setPayLoad({ Info: Data });
        ciSetUp.postdata(e.model.Id).then(function () {
            console.log(ciSetUp.postcreatedata);
        });


    }

因此,如果ApprovalStatus等于Waiting,则Approval Status字段应该变为不可编辑,这是我无法获得的。

在if条件下工作正常,但循环内的东西不执行

1 个答案:

答案 0 :(得分:1)

不使用$('#Grid').data("kendoGrid").closeCell();,而是使用e.sender.closeCell();

修改 以上答案适用于incell编辑模式。使用inline编辑模式时,请改用e.sender.cancelRow();

请参阅this Plunker demo