Kendo网格单元格编辑

Job*_*obi 4 c# asp.net-mvc telerik kendo-ui

我想手动编辑单元格,并根据输入的数据自动显示另一个单元格上的内容.

对于例如:如果数量已更改,则应计算总计(价格*数量)并在总计列上显示结果

在此输入图像描述

是否可以使用Kendo网格?任何帮助赞赏.

Ona*_*Bai 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 }
            }
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

然后你的网格应该是这样的:

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");
Run Code Online (Sandbox Code Playgroud)

您需要添加到Grid定义的是save事件处理程序,它检查哪个字段已使用更改e.values(e接收的事件信息在哪里save)并计算新的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);
        }
    }
Run Code Online (Sandbox Code Playgroud)

示例:http://jsfiddle.net/qA8QX/