I want to manually edit a cell and and based on that entered data, automatically display content on another cell.
For Eg: If quantity is changed, Total should be calculated (price * quantity) and display the result on Total column
Is it possible using Kendo grid? Any help appreciated.
Yes, it is possible. You can find some information on internet if you search for "KendoUI Grid calculated field".
The solution depends on the type of edition mode that you have chosen ("inline", "incell" or "popup"). Since I'm not seeing any column in your grid with a button for triggering the edition, I'll understand that you are editing incell
. Then the solution is intercept the save
event and compute the field as that.
Let have your DataSource
defined as:
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 }
}
}
}
};
Then your Grid should be something like:
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");
What you need to add to Grid
definition is the save
event handler that check which field has changed using e.values
(where e
is the event information received by save
) and compute the new Total
and set it using set
method on the model.
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);
}
}
Example here : http://jsfiddle.net/qA8QX/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With