|
@using Syncfusion.Blazor.QueryBuilder
@using Syncfusion.Blazor.DropDowns
@using Syncfusion.Blazor.Buttons
@using Syncfusion.Blazor.Inputs
@using Syncfusion.Blazor.Data
<div class="col-lg-12 control-section">
<SfQueryBuilder Width="70%" ModelType="typeof(SfQueryBuilder)">
<QueryBuilderRule Condition="and" Rules="@Rules"></QueryBuilderRule>
<QueryBuilderColumns>
<QueryBuilderColumn Field="Category" Label="Category" Type="string"></QueryBuilderColumn>
<QueryBuilderColumn Field="PaymentMode" Label="PaymentMode" Type="string" Values="@DropValue">
<Template>
<SfDropDownList TValue="string" TItem="OrderDetails" PopupHeight="230px" Placeholder="Select a name" Query="@RemoteDataQuery">
<SfDataManager Url="https://js.syncfusion.com/demos/ejServices/Wcf/Northwind.svc/Orders" CrossDomain="true" Adaptor="Syncfusion.Blazor.Adaptors.ODataAdaptor"></SfDataManager>
<DropDownListFieldSettings Text="CustomerID" Value="CustomerID"></DropDownListFieldSettings>
</SfDropDownList>
</Template>
</QueryBuilderColumn>
<QueryBuilderColumn Field="TransactionType" Label="TransactionType" Type="boolean" Values="@CheckboxValue">
<Template>
<SfCheckBox TChecked="bool" Label="Is Expensive" Checked="true" ValueChange="@CheckboxChange">
</SfCheckBox>
</Template>
</QueryBuilderColumn>
<QueryBuilderColumn Field="Description" Label="Description" Type="string"></QueryBuilderColumn>
<QueryBuilderColumn Field="Date" Label="Date" Type="date"></QueryBuilderColumn>
<QueryBuilderColumn Field="Amount" Label="Amount" Type="number" Values="@SliderValue">
<Template>
<SfSlider TValue="string" Min="0" Max="100" Value="@DefaultSliderValue">
<SliderEvents TValue="string" OnChange="SliderChange"></SliderEvents>
</SfSlider>
</Template>
</QueryBuilderColumn>
</QueryBuilderColumns>
</SfQueryBuilder>
</div>
@code{
public string SliderValue { get; set; }
public string DefaultValue = "Cash";
public string DefaultSliderValue = "50";
public string DropValue { get; set; }
bool Done { get; set; } = true;
string CheckboxValue => Done ? "IsExpensive" : "Income";
public void OnChange(Syncfusion.Blazor.DropDowns.ChangeEventArgs<string> args)
{
DropValue = args.Value;
}
public void SliderChange(Syncfusion.Blazor.Inputs.SliderChangeEventArgs<string> args)
{
SliderValue = args.Value;
}
public void CheckboxChange(Syncfusion.Blazor.Buttons.ChangeEventArgs<bool> args)
{
Done = args.Checked;
}
public Query RemoteDataQuery = new Query().Select(new List<string> { "CustomerID" }).Take(6).RequiresCount();
public class OrderDetails
{
public int? OrderID { get; set; }
public string CustomerID { get; set; }
public int? EmployeeID { get; set; }
public double? Freight { get; set; }
public string ShipCity { get; set; }
public bool Verified { get; set; }
public DateTime? OrderDate { get; set; }
public string ShipName { get; set; }
public string ShipCountry { get; set; }
public DateTime? ShippedDate { get; set; }
public string ShipAddress { get; set; }
}
List<RuleModel> Rules = new List<RuleModel>()
{
new RuleModel { Label="Category", Field="Category", Type="string", Operator="equal", Value="Clothing" },
new RuleModel { Condition="or", Rules = new List<RuleModel>() {
new RuleModel { Label="Payment Mode", Field="PaymentMode", Type="string", Operator="equal", Value="Cash" },
new RuleModel { Label="TransactionType", Field="TransactionType", Type="boolean", Operator="equal", Value="Is Expensive" },
} },
new RuleModel { Label="Amount", Field="Amount", Type="number", Operator="equal", Value=50 }
};
}
<style>
.e-query-builder {
margin: 0 auto;
}
.e-control-wrapper.e-slider-container.e-horizontal {
height: 0;
}
</style>
|