|
@(Html.EJ().Grid<object>("HierarchyGrid")
.Datasource((IEnumerable<object>)ViewBag.datasource)
.Columns(col =>
{
...
})
.ChildGrid(child =>
{
child.Datasource(ds => ds.URL("/Grid/UrlDataSource").Adaptor(AdaptorType.UrlAdaptor))
.QueryString("EmployeeID")
.ShowSummary()
.SummaryRow(row =>
{
row.Title("Sum").SummaryColumns(col => { col.SummaryType(SummaryType.Sum).Format("{0:C}").DisplayColumn("Freight").DataMember("Freight").Add(); }).Add();
row.Title("Average").SummaryColumns(col => { col.SummaryType(SummaryType.Average).Format("{0:C}").DisplayColumn("Freight").DataMember("Freight").Add(); }).Add();
})
...
})
)
[GriFeatures.cs]
public ActionResult UrlDataSource(DataManager dm)
{
IEnumerable DataSource = new NorthwindDataContext().OrdersViews.ToList();
DataOperations ds = new DataOperations();
List<string> str = new List<string>();
...
if (dm.Where != null && dm.Where.Count > 0) //Filtering
{
DataSource = ds.PerformWhereFilter(DataSource, dm.Where, dm.Where[0].Operator);
}
if (dm.Aggregates != null)
{
for (var i = 0; i < dm.Aggregates.Count; i++)
str.Add(dm.Aggregates[i].Field);
}
IEnumerable aggregate = ds.PerformSelect(DataSource, str);
var count = DataSource.Cast<OrdersView>().Count();
if(dm.Skip != 0 )
DataSource = ds.PerformSkip(DataSource, dm.Skip);
if (dm.Take != 0)
DataSource = ds.PerformTake(DataSource, dm.Take);
return Json(new { result = DataSource, count = count, aggregate = aggregate }); //return that result with aggregate details also.
}
|