我的列数是我的剑道网格中的数量,总价格。然后我想将计算列添加到我的datagrid。 例如:
$("#gridcolumnadd").click(function (e) {
//1.add new column code Column Name is "Price For per kg"
//2.Set Column type is number
//3.Set Column aggregate is sum for footerTemplate
//4.add calculated values ex:(Totalprice/quantity) to "Price For per kg" with using for loop row count.
//redraw datagrid
});
可以在kendo datagrid中创建吗? **
注意
我想先创建DATAGRID,然后通过计算添加新列。原因是“我写的只是按钮点击”
** 例如;它不起作用
var raw = grid.dataSource.data();
var length = raw.length;//if ı have many data . I can use For Loop
raw[0].new="Test"; //I think one data we have it
grid.columns.push({ field: "new" });
grid.dataSource.data(raw);
答案 0 :(得分:3)
一些提示:
columns.aggregate
。dataBound
事件处理程序或甚至使用DataSource schema.parse
让我们看看它是如何结合在一起的......
这是我原来的架构:
schema: {
model: {
id: "ProductID",
fields: {
ProductID: { type: "number" },
ProductName: { type : "text" },
UnitPrice: { type: "number" },
UnitsInStock: { type: "number" }
}
},
...
第一件事是添加Total
等于UnitPrice
次UnitsInStock
,我将使用parse
。
schema: {
model: {
id: "ProductID",
fields: {
ProductID: { type: "number" },
ProductName: { type : "text" },
UnitPrice: { type: "number" },
UnitsInStock: { type: "number" },
Total: { type: "total" }
}
},
parse : function (d) {
$.each(d, function(idx, elem) {
elem.Total = elem.UnitPrice * elem.UnitsInStock;
})
return d;
}
},
你可以看到我添加了一个额外的字段Total
,然后在parse
中我迭代计算每条记录的总数。
接下来定义一个聚合,计算收到的所有数据的总和。
aggregate: [
{ field: "Total", aggregate: "sum" }
]
这很简单!
现在让我们定义网格的列:
columns: [
{ field: "ProductName", title : "Name" },
{ field: "UnitPrice", title: "Price" },
{ field: "UnitsInStock", title:"Units" },
{
field: "Total",
title:"Total",
hidden: true,
aggregates: [ "sum" ],
footerTemplate: "#= sum #"
}
]
重要的是Total
列,其中:
*我使用hidden: true
定义为(最初)隐藏。
*我还定义了aggregate
sum
。
*最后我定义了一个用于打印它的模板。
最后,我不需要重绘网格,只需调用columnShow
...
$("#gridcolumnadd").click(function (e) {
$("#grid").data("kendoGrid").columnShow(3);
});