|
<SfQueryBuilder @ref="QueryBuilderObj" TValue="EmployeeDetails">
<QueryBuilderEvents Created="Created" TValue="EmployeeDetails"></QueryBuilderEvents>
<QueryBuilderColumns>
<QueryBuilderColumn Field="EmployeeID" Label="Employee ID" Type="ColumnType.Number" Operators="Operators"></QueryBuilderColumn>
<QueryBuilderColumn Field="FirstName" Label="First Name" Type="ColumnType.String" Operators="customOperators"></QueryBuilderColumn>
<QueryBuilderColumn Field="TitleOfCourtesy" Label="Title of Courtesy" Type="ColumnType.Boolean" Values="Values"></QueryBuilderColumn>
<QueryBuilderColumn Field="Title" Label="Title" Type="ColumnType.String" Operators="customOperators"></QueryBuilderColumn>
<QueryBuilderColumn Field="HireDate" Label="Hire Date" Type="ColumnType.Date"></QueryBuilderColumn>
<QueryBuilderColumn Field="Country" Label="Country" Type="ColumnType.String" Operators="customOperators"></QueryBuilderColumn>
<QueryBuilderColumn Field="City" Label="City" Type="ColumnType.String"></QueryBuilderColumn>
</QueryBuilderColumns>
</SfQueryBuilder>
@code {
SfQueryBuilder<EmployeeDetails> QueryBuilderObj;
private void Created()
{
}
public List<OperatorsModel> Operators = new List<OperatorsModel> {
new OperatorsModel { Text="Equal", Value="equal"},
new OperatorsModel { Text="Not equal", Value="notequal"},
new OperatorsModel { Text="Greater than", Value="greaterthan"},
new OperatorsModel { Text="Less than", Value="lessthan"},
new OperatorsModel { Text="Less than or equal", Value="lessthanorequal"},
new OperatorsModel { Text="Greater than or equal", Value="greaterthanorequal"}
};
public List<OperatorsModel> customOperators = new List<OperatorsModel> {
new OperatorsModel { Text="Equal", Value="equal"},
new OperatorsModel { Text="Not equal", Value="notequal"}
};
private string[] Values = new string[] { "Mr.", "Mrs." };
public class EmployeeDetails
{
public int EmployeeID { get; set; }
public string FirstName { get; set; }
public bool TitleOfCourtesy { get; set; }
public string Title { get; set; }
public DateTime HireDate { get; set; }
public string Country { get; set; }
public string City { get; set; }
}
}
|
Mohan,
Your example above works great if you are hardcoding your QueryBuilderColumns.... However, your solution isn't viable if you are trying to create dynamic columns. In a dynamic column scenario, you would typically try to build your column ui as per the below:
|
<SfQueryBuilder TValue="ExpandoObject">
<QueryBuilderColumns>
@{
foreach(var column in columns)
{
<QueryBuilderColumn Field="@column.Field" Label="@column.Label" Type="@column.Type" Operators="@column.Operators"></QueryBuilderColumn>
}
}
</QueryBuilderColumns>
</SfQueryBuilder>
@code {
private List<QueryBuilderColumn> columns = new();
private static string[] Values = new string[] { "Mr.", "Mrs." };
public List<OperatorsModel> CustomOperators = new List<OperatorsModel> {
new OperatorsModel { Text="Equal", Value="equal"},
new OperatorsModel { Text="Not equal", Value="notequal"}
};
protected override async Task OnInitializedAsync()
{
columns = new List<QueryBuilderColumn>()
{
new QueryBuilderColumn(){ Field="EmployeeID", Label="Employee ID", Type=ColumnType.Number, Operators=CustomOperators},
new QueryBuilderColumn(){ Field="FirstName", Label="First Name", Type=ColumnType.String, Operators=CustomOperators},
new QueryBuilderColumn(){ Field="TitleOfCourtesy", Label="Title of Courtesy", Type=ColumnType.Boolean, Values=Values },
};
await base.OnInitializedAsync();
}
} |