3

我有一个包含 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);

而且它没有更新,因为该列的类型是“数字”。

更新:

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);
    });
}
4

1 回答 1

5

不要在 中定义的处理程序中更新collection,而是在您的网格中定义一个事件处理程序,如下所示:blureditsave

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);
}
于 2013-06-18T08:23:37.683 回答