<div class="col-lg-12 control-section">
<SfQueryBuilder @ref="Querybuilder">
<SfDataManager Url="https://services.odata.org/V4/Northwind/Northwind.svc/Orders/" Adaptor="Adaptors.ODataV4Adaptor"></SfDataManager>
<QueryBuilderRule Condition="or" Rules="@ImportRules"></QueryBuilderRule>
<QueryBuilderEvents RuleChanged="UpdateRule"></QueryBuilderEvents>
<QueryBuilderColumns>
<QueryBuilderColumn Field="OrderID" Label="Order ID" Type="number"></QueryBuilderColumn>
<QueryBuilderColumn Field="CustomerID" Label="Customer Name" Type="string"></QueryBuilderColumn>
<QueryBuilderColumn Field="ShipCity" Label="Ship City" Type="string"></QueryBuilderColumn>
<QueryBuilderColumn Field="ShipCountry" Label="Ship Country" Type="string"></QueryBuilderColumn>
</QueryBuilderColumns>
</SfQueryBuilder>
</div>
<div class="col-lg-12 control-section">
<div class="content-wrapper">
<div class="row">
<SfGrid TValue="Order" AllowPaging="true" Query="@GridQueryData">
<SfDataManager Url="https://services.odata.org/V4/Northwind/Northwind.svc/Orders/" Adaptor="Adaptors.ODataV4Adaptor"></SfDataManager>
<GridColumns>
<GridColumn Field=@nameof(Order.OrderID) HeaderText="Order ID" IsPrimaryKey="true" TextAlign="TextAlign.Right" Width="120"></GridColumn>
<GridColumn Field=@nameof(Order.CustomerID) HeaderText="Customer Name" Width="150"></GridColumn>
<GridColumn Field=@nameof(Order.ShipCity) HeaderText=" Ship City" Width="130"></GridColumn>
<GridColumn Field=@nameof(Order.ShipCountry) HeaderText="Ship Country" Width="120"></GridColumn>
</GridColumns>
</SfGrid>
</div>
</div>
</div>
@code{
public class Order
{
public int? OrderID { get; set; }
public string CustomerID { get; set; }
public string ShipCity { get; set; }
public string ShipCountry { get; set; }
}
SfQueryBuilder Querybuilder;
private Query GridQueryData = new Query().Where("CustomerID", "equal", "VINET");
public Object QueryData;
public WhereData FilterQuery;
public RuleModel GetRule { get; set; }
private async void Created()
{
RuleModel Rule = new RuleModel()
{
Condition = "or",
Rules = new List<RuleModel> {
new RuleModel { Field = "CustomerID", Value = "VINET", Operator = "equal" } },
};
this.GetRule = await Querybuilder.GetValidRules(Rule);
this.UpdateRule(new RuleChangeEventArgs() { Name = "", PreviousRule = null, Type = "", Rule = this.GetRule });
}
public List<RuleModel> ImportRules = new List<RuleModel>
{
new RuleModel { Field = "CustomerID", Value = "VINET", Operator = "equal" }
};
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 class WhereData
{
public List<WhereFilter> Where { get; set; }
}
} |
@using Syncfusion.Blazor.QueryBuilder
@using Syncfusion.Blazor.Grids
@using Syncfusion.Blazor.Data
@using Syncfusion.Blazor
@using Newtonsoft.Json.Linq;
@using ColumnType = Syncfusion.Blazor.QueryBuilder.ColumnType
<div class="col-lg-12 control-section">
<SfQueryBuilder @ref="Querybuilder" TValue="Order">
<SfDataManager Url="https://services.odata.org/V4/Northwind/Northwind.svc/Orders/" Adaptor="Adaptors.ODataV4Adaptor"></SfDataManager>
<QueryBuilderEvents TValue="Order" RuleChanged="UpdateRule"></QueryBuilderEvents>
<QueryBuilderColumns>
<QueryBuilderColumn Field="OrderID" Label="Order ID" Type="ColumnType.Number"></QueryBuilderColumn>
<QueryBuilderColumn Field="CustomerID" Label="Customer Name" Type="ColumnType.String"></QueryBuilderColumn>
<QueryBuilderColumn Field="ShipCity" Label="Ship City" Type="ColumnType.String"></QueryBuilderColumn>
<QueryBuilderColumn Field="ShipCountry" Label="Ship Country" Type="ColumnType.String"></QueryBuilderColumn>
</QueryBuilderColumns>
</SfQueryBuilder>
</div>
<div class="col-lg-12 control-section">
<div class="content-wrapper">
<div class="row">
<SfGrid TValue="Order" AllowPaging="true" Query="@GridQueryData">
<SfDataManager Url="https://services.odata.org/V4/Northwind/Northwind.svc/Orders/" Adaptor="Adaptors.ODataV4Adaptor"></SfDataManager>
<GridColumns>
<GridColumn Field=@nameof(Order.OrderID) HeaderText="Order ID" IsPrimaryKey="true" TextAlign="TextAlign.Right" Width="120"></GridColumn>
<GridColumn Field=@nameof(Order.CustomerID) HeaderText="Customer Name" Width="150"></GridColumn>
<GridColumn Field=@nameof(Order.ShipCity) HeaderText=" Ship City" Width="130"></GridColumn>
<GridColumn Field=@nameof(Order.ShipCountry) HeaderText="Ship Country" Width="120"></GridColumn>
</GridColumns>
<GridEvents Created="Created" TValue="Order"></GridEvents>
</SfGrid>
</div>
</div>
</div>
@code{
SfQueryBuilder<Order> Querybuilder;
private Query GridQueryData = new Query().Where("CustomerID", "equal", "VINET");
public List<RuleModel> ImportRules = new List<RuleModel>
{
new RuleModel { Field = "CustomerID", Label="Customer Name", Value = "VINET", Operator = "equal", Type = "String"}
};
private void Created()
{
Querybuilder.SetRules(ImportRules, "and");
}
private void UpdateRule(RuleChangeEventArgs args)
{
var predicate = Querybuilder.GetPredicate();
if (predicate != null)
{
GridQueryData = new Query().Where(predicate);
}
else
{
GridQueryData = new Query();
}
}
public class Order
{
public int? OrderID { get; set; }
public string CustomerID { get; set; }
public string ShipCity { get; set; }
public string ShipCountry { get; set; }
}
}
|