<SfDropDownList @ref="dropObj" TValue="string" AllowFiltering="true" TItem="GameFields" PopupHeight="230px" Placeholder="Select a game" DataSource="@Games">
<DropDownListFieldSettings Text="FirstName" Value="ID"></DropDownListFieldSettings>
<DropDownListEvents TValue="string" TItem="GameFields" Filtering="onFilter"></DropDownListEvents>
<DropDownListTemplates TItem="GameFields">
<ValueTemplate>
<span class='name'>@((context as GameFields).FirstName) @((context as GameFields).LastName)</span>
</ValueTemplate>
<ItemTemplate>
<span class='name'>@((context as GameFields).FirstName) @((context as GameFields).LastName)</span>
</ItemTemplate>
</DropDownListTemplates>
</SfDropDownList>
@code {
SfDropDownList<string, GameFields> dropObj;
public class GameFields
{
public string ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
private List<GameFields> Games = new List<GameFields>() {
new GameFields(){ ID= "Game1", LastName= "Olsen", FirstName="Hans" },
new GameFields(){ ID= "Game2", LastName= "Fuller", FirstName="Andrew" },
new GameFields(){ ID= "Game3", LastName= "Bond", FirstName="James" },
};
public void onFilter(FilteringEventArgs args)
{
var firstField = "";
var secondField = "";
var splitText = args.Text.Split(" ");
firstField = splitText[0];
if (splitText.Length == 2)
{
secondField = splitText[1];
}
args.PreventDefaultAction = true;
var pre = new WhereFilter();
var predicate = new List<WhereFilter>();
predicate.Add(new WhereFilter() { Condition = "or", Field = "FirstName", value = firstField, Operator = "contains", IgnoreAccent = true, IgnoreCase = true });
predicate.Add(new WhereFilter() { Condition = "or", Field = "LastName", value = secondField, Operator = "contains", IgnoreAccent = true, IgnoreCase = true });
pre = WhereFilter.Or(predicate);
var query = new Query().Where(pre);
this.dropObj.Filter(Games, query);
}
} |