<ejs-grid id="Grid" width="auto" toolbar="@(new List<string>() { "Add", "Edit", "Delete", "Update", "Cancel" })" allowPaging="true">
<e-data-manager url='api/Orders/' adaptor="WebApiAdaptor" crossdomain="true"></e-data-manager>
. . .
</ejs-grid>
|
public class OrdersController : Controller
{
// GET: api/Orders
[HttpGet]
public object Get()
{
. . .
return Json(new { Items = data.Skip(skip).Take(take), Count = data.Count()});
}
// POST: api/Orders
[HttpPost]
public object Post([FromBody]OrdersDetails value)
{
. . .
}
// PUT: api/Orders/5
[HttpPut]
public object Put([FromBody]OrdersDetails value)
{
. . .
return value;
}
// DELETE: api/ApiWithActions/5
[HttpDelete("{id:int}")]
[Route("Orders/{id:int}")]
public object Delete(int id)
{
. . .
return Json(id);
}
} |
[OrderController.cs]
namespace AngularwithASPCore.Controllers
{
[Produces("application/json")]
[Route("api/Orders/")]
public class OrdersController : Controller
{
// GET: api/Orders
[HttpGet]
public object GetSomeOtherStuff() // Here, override the Get method
{
var queryString = Request.Query;
int skip = Convert.ToInt32(queryString["$skip"]);
int take = Convert.ToInt32(queryString["$top"]);
var data = OrdersDetails.GetAllRecords().ToList();
return Json(new { Items = data.Skip(skip).Take(take), Count = data.Count() });
}
|
<ejs-grid #grid [dataSource]='data' allowFiltering="true" allowPaging="true" allowSorting="true" height="320">
<e-columns>
<e-column field='OrderID' headerText='Order ID' isPrimaryKey=true width='150'></e-column>
<e-column field='CustomerID' headerText='Customer Name' width='150'></e-column>
<e-column field='ShipCity' headerText='ShipCity' width='150' textAlign='Right'></e-column>
</e-columns>
</ejs-grid> |
export class FetchDataComponent {
public data: any;
@ViewChild('grid')
public grid: GridComponent;
ngOnInit(): void {
this.data = new DataManager({
url: 'api/Orders',
adaptor: new WebApiAdaptor
});
}
} |
public object Get()
{
var queryString = Request.Query;
var data = OrdersDetails.GetAllRecords().ToList();
string sort = queryString["$orderby"]; //sorting
string filter = queryString["$filter"]; //filtering
if (sort != null)
{
var sortfield = sort.Split(' ');
var sortColumn = sortfield[0];
if (sortfield.Length == 2)
{
sortColumn = sortfield[0];
switch (sortColumn)
{
case "OrderID":
data = data.OrderByDescending(x => x.OrderID);
break;
. . . . .
}
}
else
{
switch (sortColumn)
{
case "OrderID":
data = data.OrderBy(x => x.OrderID);
break;
case "CustomerID":
data = data.OrderBy(x => x.CustomerID);
break;
}
}
}
if (filter != null)
{
var newfiltersplits = filter;
var filtersplits = newfiltersplits.Split('(', ')', ' ');
var filterfield = filtersplits[1];
var filtervalue = filtersplits[3];
if (filtersplits.Length != 5)
{
filterfield = filter.Split('(', ')', '\'')[3]; //get field from query
filtervalue = filter.Split('(', ')', '\'')[5]; // get value from query
}
switch (filterfield)
{
case "OrderID":
data = (from cust in data
where cust.OrderID.ToString() == filtervalue.ToString()
select cust).ToList();
break;
case "CustomerID":
data = (from cust in data
wherecust.CustomerID.ToLower().StartsWith(filtervalue.ToString())
select cust).ToList();
break;
}
}
int skip = Convert.ToInt32(queryString["$skip"]); // paging
int take = Convert.ToInt32(queryString["$top"]);
return take != 0 ? new { Items = data.Skip(skip).Take(take).ToList(), Count = data.Count() } : new { Items = data, Count = data.Count() };
}
|