or
@(Html.Kendo().Grid<ProductViewModel>() .Name("productsGrid") .Columns(columns => { columns.Bound(p => p.ProductName) .ClientFooterTemplate("Total Count: #=count#") .ClientGroupFooterTemplate("Count: #=count#"); columns.Bound(p => p.UnitPrice).Format("{0:C}") .ClientFooterTemplate("<div>Sum: #= sum #</div>") .ClientGroupFooterTemplate("<div>Sum: #= sum #</div>"); columns.Bound(p => p.UnitsOnOrder) .ClientFooterTemplate("Average: #=average#") .ClientGroupFooterTemplate("Average: #=average#"); columns.Bound(p => p.UnitsInStock) .ClientGroupHeaderTemplate("Units In Stock: #= value # (Count: #= count#)") .ClientFooterTemplate("<div>Min: #= min #</div><div>Max: #= max #</div>"); }) .DataSource(dataSource => dataSource .Ajax() .Aggregates(aggregates => { aggregates.Add(p => p.UnitsInStock).Min().Max().Count(); aggregates.Add(p => p.UnitsOnOrder).Average(); aggregates.Add(p => p.ProductName).Count(); aggregates.Add(p => p.UnitPrice).Sum(); }) .Group(groups => groups.Add(p => p.Category)) .Read(read => read.Action("Products", "Home")) )public ActionResult Products([DataSourceRequest] DataSourceRequest request) { return Json(GetProducts().ToDataSourceResult(request)); } private IEnumerable<ProductViewModel> GetProducts() { var products = new List<ProductViewModel>(); products.Add(new ProductViewModel() { Category = "Food", ProductName = "Pasta", UnitPrice = 39.00m, UnitsInStock = 1, UnitsOnOrder = 5 }); products.Add(new ProductViewModel() { Category = "Food", ProductName = "Salami", UnitPrice = 21.00m, UnitsInStock = 2, UnitsOnOrder = 3 }); products.Add(new ProductViewModel() { Category = "Food", ProductName = "Bratwurst", UnitPrice = 39.00m, UnitsInStock = 2, UnitsOnOrder = 7 }); return products.AsEnumerable(); }@model IEnumerable<ProductViewModel>@(Html.Kendo().Grid(Model) .Name("productsGrid") .Columns(columns => { columns.Bound(p => p.ProductName) .ClientFooterTemplate("Total Count: #=count#") .ClientGroupFooterTemplate("Count: #=count#"); columns.Bound(p => p.UnitPrice).Format("{0:C}") .ClientFooterTemplate("<div>Sum: #= sum #</div>") .ClientGroupFooterTemplate("<div>Sum: #= sum #</div>"); columns.Bound(p => p.UnitsOnOrder) .ClientFooterTemplate("Average: #=average#") .ClientGroupFooterTemplate("Average: #=average#"); columns.Bound(p => p.UnitsInStock) .ClientGroupHeaderTemplate("Units In Stock: #= value # (Count: #= count#)") .ClientFooterTemplate("<div>Min: #= min #</div><div>Max: #= max #</div>"); }) .DataSource(dataSource => dataSource .Server() .Aggregates(aggregates => { aggregates.Add(p => p.UnitsInStock).Min().Max().Count(); aggregates.Add(p => p.UnitsOnOrder).Average(); aggregates.Add(p => p.ProductName).Count(); aggregates.Add(p => p.UnitPrice).Sum(); }) .Group(groups => groups.Add(p => p.Category)) )groupable: true
('#div_widget').kendoWindow ({ actions: ["Refresh", "Maximize", "Minimize"], height : get_widget_setting (id_widget, "height", "300px"), width : get_widget_setting (id_widget, "width", "600px"), minWidth: 600, minHeight: 260, title : w.label, iframe : true, content: w.href, resize : function(e){ var widget = e.sender.element.data("kendoWindow"); var is_maximized = widget.options.isMaximized; // Is this a dirty hack? Are there another ways? if (is_maximized) { set_global_setting ("maximized_widget", id_widget); return; } var wrapper = widget.wrapper; save_widget_setting(id_widget, "height", wrapper.css("height")); save_widget_setting(id_widget, "width", wrapper.css("width")); }, dragend : function (e) { var position = e.sender.element.data("kendoWindow").wrapper.offset(); save_widget_setting(id_widget, "top", position.top + "px"); save_widget_setting(id_widget, "left", position.left + "px"); }})
