|
<div>
<ejs-querybuilder id="querybuilder" width="100%" ruleChange="updateRule">
<e-data-manager url="Home/QBDataSource" adaptor="UrlAdaptor" crossDomain="true"></e-data-manager>
<e-querybuilder-columns>
<e-querybuilder-column field="OrderID" label="Order ID" type="number">
</e-querybuilder-column>
<e-querybuilder-column field="OrderDate" label="Order Date" type="date" format="MM/dd/yyyy"></e-querybuilder-column>
<e-querybuilder-column field="ShipCountry" label="Ship Country" type="string"></e-querybuilder-column>
</e-querybuilder-columns>
</ejs-querybuilder>
</div>
<script>
function updateRule(args) {
var qryBldrObj = document.getElementById('querybuilder').ej2_instances[0];
var predicate = qryBldrObj.getPredicate(qryBldrObj.getValidRules(qryBldrObj.rule));
var dataManagerQuery = new ej.data.Query().where(predicate);
console.log(dataManagerQuery);
}
</script> |
|
public IActionResult QBDatasource([FromBody]DataManagerRequest dm)
{
IEnumerable DataSource = orddata;
DataOperations operation = new DataOperations();
if (dm.Where != null && dm.Where.Count > 0) //Filtering
{
DataSource = operation.PerformFiltering(DataSource, dm.Where, dm.Where[0].Operator);
}
int count = DataSource.Cast<OrdersDetails>().Count();
if (dm.Skip != 0)
{
DataSource = operation.PerformSkip(DataSource, dm.Skip); //Paging
}
if (dm.Take != 0)
{
DataSource = operation.PerformTake(DataSource, dm.Take);
}
return dm.RequiresCounts ? Json(new { result = DataSource, count = count }) : Json(DataSource);
} |