BoldSignA modern eSignature application with affordable pricing. Sign up today for unlimited document usage!
[GridFeatures.cshtml]
@(Html.EJ().Grid<OrdersView>("FlatGrid")
.Datasource(ds => ds.URL("/Grid/DataSource").Adaptor(AdaptorType.UrlAdaptor))
.AllowPaging(true).PageSettings(page => page.PageSize(8))
.AllowGrouping(false)
.AllowSorting()
---------------
.Columns(col =>
{
-----------
})
)
|
[GridController.cs]
public ActionResult DataSource(DataManager dm)
{
IEnumerable DataSource = new NorthwindDataContext().OrdersViews.ToList();
DataResult result = new DataResult();
DataOperations operation = new DataOperations();
result.result = DataSource;
if (dm.Sorted != null && dm.Sorted.Count > 0) //Sorting
{
result.result = operation.PerformSorting(result.result, dm.Sorted);
}
result.count = result.result.AsQueryable().Count();
if (dm.Skip > 0) // for paging
result.result = operation.PerformSkip(result.result, dm.Skip);
if (dm.Take > 0)
result.result = operation.PerformTake(result.result, dm.Take);
return Json(new { result = result.result, count = result.count }); }
|
public static DataResult ToResult<TEntity>(this IQueryable<TEntity> query, DataManager dm) { var result = new DataResult(); var op = new DataOperations(); if (dm.Sorted == null) { query = SetSorting(query, new List<Sort> { new Sort { Name = "Id", Direction = "descending" } }); } if (dm.Sorted != null && dm.Sorted.Count > 0) //Sorting { query = (IQueryable<TEntity>)op.PerformSorting(query, dm.Sorted); } if (dm.Where != null && dm.Where.Count > 0) //Filtering { query = (IQueryable<TEntity>)op.PerformWhereFilter(query, dm.Where, dm.Where[0].Operator); } result.count = query.AsQueryable().Count(); if (dm.Skip > 0) query = (IQueryable<TEntity>)op.PerformSkip(query, dm.Skip); if (dm.Take > 0) query = (IQueryable<TEntity>)op.PerformTake(query, dm.Take); result.result = query.ToList(); return result; }
private static IQueryable<TEntity> SetSorting<TEntity>(IQueryable<TEntity> query, List<Sort> sorted) { var parameter = Expression.Parameter(typeof(TEntity), "p"); Expression resultExpression = null; foreach (var item in sorted) { string command = "OrderBy"; if (item.Direction.ToLower() == "descending") { command = "OrderByDescending"; } var property = typeof(TEntity).GetProperty(item.Name); var propertyAccess = Expression.MakeMemberAccess(parameter, property); var orderByExpression = Expression.Lambda(propertyAccess, parameter); resultExpression = Expression.Call(typeof(Queryable), command, new Type[] { typeof(TEntity), property.PropertyType }, query.Expression, Expression.Quote(orderByExpression)); query = query.Provider.CreateQuery<TEntity>(resultExpression); } return query; }