|
@(Html.EJ().Grid<OrdersView>("Grid")
.Datasource(ds => ds.URL("UrlDataSource").UpdateURL("UrlUpdate").InsertURL("UrlInsert").RemoveURL("UrlDelete")
.Adaptor(AdaptorType.UrlAdaptor))
.AllowPaging()
.AllowSorting()
.Columns(col =>
{
col.Field("OrderID").HeaderText("Order ID").IsPrimaryKey(true).Width(90).Add();
col.Field("CustomerID").HeaderText("Customer ID").Width(80).Add();
col.Field("EmployeeID").HeaderText("Employee Name").ForeignKeyField("EmployeeID")
.ForeignKeyValue("FirstName").DataSource((IEnumerable<object>)ViewBag.dataSource2)
.TextAlign(TextAlign.Left).Width(90).Add();
})
) |
|
public ActionResult DataSource(DataManager dm)
{
. . ..
. . . .
List<Orders> ord = (List<Orders>)order;
DataOperations dp = new DataOperations();
if (dm.Sorted != null)
{
if (dm.Sorted[0].Name == "EmployeeID")
order = SortFor(ord, emp, dm.Sorted);//Only for foreignKey Column
else
order = dp.PerformSorting(order, dm.Sorted);
}
var count = order.AsQueryable().Count();
if (dm.Skip != null && dm.Take != null)
{
order = dp.PerformSkip(order, dm.Skip);
order = dp.PerformTake(order, dm.Take);
}
return new { result = order, count = count };
}
public List<Orders> SortFor(List<Orders> ord, List<Employee> emp, List<Sort> Sorted)
{
if (Sorted[0].Direction == "ascending")//check whether ascending or descending
emp = emp.OrderBy(e => e.FirstName).ToList();
else
emp = emp.OrderByDescending(e => e.FirstName).ToList();
List<Orders> or = new List<Orders>();
for (int i = 0; i < emp.Count(); i++)
{ //Select the Field matching records
IEnumerable<Orders> list = ord.Where(pred => pred.EmployeeID == emp[i].EmployeeID).ToList();
or.AddRange(list);
}
return or;
} |
Hi! All works fine,
Thanks for your help,
Regards!