if (dm.Search != null && dm.Search.Count > 0)
{
// Searching
DataSource = DataOperations.PerformSearching(DataSource, dm.Search);
}
if (dm.Sorted != null && dm.Sorted.Count > 0)
{
// Sorting
DataSource = DataOperations.PerformSorting(DataSource, dm.Sorted);
}
if (dm.Where != null && dm.Where.Count > 0)
{
// Filtering
DataSource = DataOperations.PerformFiltering(DataSource, dm.Where, dm.Where[0].Operator);
}|
<div class="col-lg-12 control-section">
<SfQueryBuilder @ref="Querybuilder">
<SfDataManager AdaptorInstance="@typeof(CustomAdaptor)" Adaptor="Adaptors.CustomAdaptor"></SfDataManager>
<QueryBuilderRule Condition="or" Rules="@ImportRules"></QueryBuilderRule>
<QueryBuilderEvents RuleChanged="UpdateRule"></QueryBuilderEvents>
<QueryBuilderColumns>
<QueryBuilderColumn Field="OrderID" Label="OrderID" Type="number"></QueryBuilderColumn>
<QueryBuilderColumn Field="CustomerID" Label="Name" Type="string"></QueryBuilderColumn>
</QueryBuilderColumns>
</SfQueryBuilder>
</div>
<SfGrid TValue="Order" ID="Grid" Query="GridQueryData" AllowSorting="true" AllowFiltering="true" AllowPaging="true" Toolbar="@(new List<string>() { "Add", "Delete", "Update", "Cancel", "Search" })">
<SfDataManager AdaptorInstance="@typeof(CustomAdaptor)" Adaptor="Adaptors.CustomAdaptor"></SfDataManager>
<GridPageSettings PageSize="8"></GridPageSettings>
<GridEditSettings AllowEditing="true" AllowDeleting="true" AllowAdding="true" Mode="@EditMode.Normal"></GridEditSettings>
<GridColumns>
<GridColumn Field=@nameof(Order.OrderID) HeaderText="Order ID" IsPrimaryKey="true" TextAlign="@TextAlign.Center" Width="140"></GridColumn>
<GridColumn Field=@nameof(Order.CustomerID) HeaderText="Customer Name" Width="150"></GridColumn>
</GridColumns>
</SfGrid>
@code{
private async void UpdateRule(RuleChangeEventArgs args)
{
this.QueryData = await Querybuilder.GetFilteredRecords();
if (this.QueryData != null)
{
this.FilterQuery = ((JObject)this.QueryData).ToObject<WhereData>();
if (this.FilterQuery.Where != null && this.FilterQuery.Where.Count > 0)
{
GridQueryData = new Query().Where(this.FilterQuery.Where);
}
this.StateHasChanged();
}
else
{
GridQueryData = new Query();
this.StateHasChanged();
}
}
public List<RuleModel> ImportRules = new List<RuleModel>
{
new RuleModel { Field = "CustomerID", Value = "BOLID", Operator = "equal" }
};
public class WhereData
{
public List<WhereFilter> Where { get; set; }
}
public class CustomAdaptor : DataAdaptor
{
// Performs data Read operation
public override object Read(DataManagerRequest dm, string key = null)
{
IEnumerable<Order> DataSource = Orders;
if (dm.Search != null && dm.Search.Count > 0)
{
// Searching
DataSource = DataOperations.PerformSearching(DataSource, dm.Search);
}
if (dm.Sorted != null && dm.Sorted.Count > 0)
{
// Sorting
DataSource = DataOperations.PerformSorting(DataSource, dm.Sorted);
}
if (dm.Where != null && dm.Where.Count > 0)
{
// Filtering
DataSource = DataOperations.PerformFiltering(DataSource, dm.Where, dm.Where[0].Operator);
}
int count = DataSource.Cast<Order>().Count();
if (dm.Skip != 0)
{
//Paging
DataSource = DataOperations.PerformSkip(DataSource, dm.Skip);
}
if (dm.Take != 0)
{
DataSource = DataOperations.PerformTake(DataSource, dm.Take);
}
return dm.RequiresCounts ? new DataResult() { Result = DataSource, Count = count } : (object)DataSource;
}
}
} |
|
<style>
. e-disable-ui{
pointer-events: none;
opacity: 0.5;
}
</style> |