Kendo Ui Grid - dataItem.set()方法无法正常工作

时间:2013-06-18 06:48:05

标签: kendo-ui kendo-grid

我有一个包含4列名称,年龄,集合,利润的网格。但是当我尝试设置一个数字列时,它没有反映在网格上。

schema:
{
    model:{
        fields:{
            name:{type:"string"},
            age:{type:"number"},
            collection: { type:"number", defaultValue:0.00},
            profit: { type:"number", defaultValue:0.00}
        }
    }
}

此代码完美无缺:

var grid = $("#grid").data("kendoGrid");
var data = grid.dataSource.at(0);
data.set("name", "John Doe");

但我想更新数字列:

var grid = $("#grid").data("kendoGrid");
var data = grid.dataSource.at(0);
var collectionVal = 50000;
data.set("collection", collectionVal);

并且它没有更新,因为该列的类型为“number”。

更新

pageable: 
{
    refresh  : true,
    pageSizes: true
},
edit: function(e) 
{
    $('input[name="age"]').blur(function()
    {
        mygrid = $("#grid").data("kendoGrid");
        selectedRow = mygrid.select();
        dataItem = mygrid.dataItem(selectedRow);

        dataItem.collection = dataItem.age * dataItem.profit;
        dataItem.set("collection", dataItem.collection);
    });
}

1 个答案:

答案 0 :(得分:5)

不是在collection中定义的blur处理程序中更新edit,而是在网格中定义save事件处理程序,如下所示:

pageable  : {
    refresh  : true,
    pageSizes: true
},
save      : function (e) {
    var profit = e.values.profit || e.model.profit;
    var age = e.values.age || e.model.age;
    this.dataSource.getByUid(e.model.uid).set("collection", age * profit);
}