《kendoGrid》动态修改某一列的数据并调用save方法

今天在项目中遇到一个问题,有需求需要去使用js动态的修改KendoUI Grid的某一列数据,并保存到数据库,一开始我是这样写的:

var dataGrid = $("#grid").data("kendoGrid");
        var data = dataGrid._data;
        var messageList = [];
        if (data.length == 0) {
            kendo.ui.showInfoDialog({
                message: "没有模板"
            });
        }else{
            for(var i = 0; i < data.length; i++){
                //动态修改sendTime
                data[i] .sendTime = curentTime();
                messageList.push({"templateId":data[i].templateId,
                    "messageReceiverId":data[i].messageReceiverId,
                    "whetherChange":"否",
                    "templateName":data[i].templateName,
                    "receiverType":data[i].receiverType,
                    "receiverName":data[i].receiverName
                });
            }
            dataGrid.refresh();
            dataGrid.saveChanges();

然后调用grid中的saveChanges()方法去保存,然而发现怎么样都保存不到数据库,单步调试之后发现根本没有请求到controller中去,前端debugger也可以发现数据确实是已经被修改了,后来突发奇想,当我修改grid中的数据时,前端grid并没有显示被修改的红色小三角,也就是说grid没有把修改的数据认定为是“修改过”的数据,后来想起了之前看到的脏数据的概念,到前端debugger后watch(监视)grid中的数据,发现果然有一个属性名为'dirty',而且在我动态修改后,dirty属性仍然为false,就被认定为未修改,然后我在修改sendTime值的后面添加这样一句代码:

data[i].dirty = true;

问题解决。

tips:在前端进行debugger时,发现了许多kendoGrid中的有用属性。

猜你喜欢

转载自blog.csdn.net/sinat_36497286/article/details/81481106