我想手动编辑单元格,并根据输入的数据自动显示另一个单元格上的内容。
对于Eg: 如果数量已更改,则应计算总计(价格*数量)并在总计列
上显示结果
是否可以使用Kendo网格?任何帮助表示赞赏。
答案 0 :(得分:7)
是的,有可能。如果搜索“KendoUI Grid calculated field”,您可以在互联网上找到一些信息。
解决方案取决于您选择的编辑模式的类型(“内联”,“incell”或“弹出”)。由于我没有在网格中看到任何列有触发版本的按钮,因此我们了解到您正在编辑incell
。然后解决方案拦截save
事件并计算该字段。
让您的DataSource
定义为:
var ds = {
data : [
{ Id: 1, ItemName: "Galaxy", Price: "25000", Qty: 2, Total: 50000 },
{ Id: 1, ItemName: "Lumia", Price: "18000", Qty: 1, Total: 18000 },
{ Id: 1, ItemName: "Experia", Price: "10000", Qty: 3, Total: 30000 }
],
schema : {
model: {
id : "Id",
fields: {
Id : { type: 'number' },
ItemName : { type: 'string' },
Price : { type: 'number' },
Qty : { type: 'number' },
Total : { type: 'number', editable: false }
}
}
}
};
然后你的网格应该是这样的:
var grid = $("#grid").kendoGrid({
dataSource: ds,
editable : "incell",
pageable : false,
columns :
[
{ field: "ItemName", title: "Item Name" },
{ field: "Price", title: "Price" },
{ field: "Qty", title: "Qty" },
{ field: "Total", title: "Total" }
]
}).data("kendoGrid");
您需要添加到Grid
定义的是save
事件处理程序,它使用e.values
检查哪个字段已更改(其中e
是save
收到的事件信息{1}})并计算新的Total
并使用模型上的set
方法进行设置。
save : function (e) {
if (e.values && (e.values.Qty || e.values.Price)) {
var qty = e.values.Qty || e.model.Qty;
var price = e.values.Price || e.model.Price;
e.model.set("Total", price * qty);
}
}