Select 将下拉列表用作Blazorise.DataGrid的筛选器
我开始用C#开发Web应用程序,并决定从Blazor开始。Select 将下拉列表用作Blazorise.DataGrid的筛选器,select,filter,datagrid,blazorise,Select,Filter,Datagrid,Blazorise,我开始用C#开发Web应用程序,并决定从Blazor开始。 Blazorise DataGrid开箱即用,支持文本框过滤器。 我想使用下拉组件来允许按特定值进行筛选。 我需要做什么才能使网格对选择值的更改做出反应? 代码示例: @page "/ItemList" @using DataAccessLibrary @using Blazorise @using Blazorise.DataGrid @inject IItemList _items; <div alig
Blazorise DataGrid开箱即用,支持文本框过滤器。
我想使用下拉组件来允许按特定值进行筛选。
我需要做什么才能使网格对选择值的更改做出反应?
代码示例:
@page "/ItemList"
@using DataAccessLibrary
@using Blazorise
@using Blazorise.DataGrid
@inject IItemList _items;
<div align="center">
<h3>Item List</h3>
</div>
@if (ItemListItems is null)
{
<p>Loading...</p>
}
else
{
<DataGrid Data="@ItemListItems" TItem="ItemListItem" PageSize="20" ShowPager="true" Filterable="true" Striped="true" Narrow="true" @bind-SelectedRow="@selectedItem">
<EmptyTemplate>
<div class="box">
No items were found!
</div>
</EmptyTemplate>
<DataGridColumns>
<DataGridCommandColumn TItem="ItemListItem" Caption="Action" EditCommandAllowed="true">
<EditCommandTemplate>
<Button Color="Color.Primary" Clicked="@context.Clicked">Edit</Button>
</EditCommandTemplate>
</DataGridCommandColumn>
<DataGridNumericColumn TItem="ItemListItem" Field="@nameof(ItemListItem.ItemID)" Caption="Item ID" Sortable="true" TextAlignment="TextAlignment.Right">
<DisplayTemplate>
<a href="ItemDetails/?Itemid=@(context.ItemID)">@(context.ItemID)</a>
</DisplayTemplate>
</DataGridNumericColumn>
<DataGridSelectColumn TItem="ItemListItem" Field="@nameof(ItemListItem.TypeShortDesc)" Caption="Item Type" Sortable="true">
// This filter should replace the default textbox with a dropdown listing only specific values
<FilterTemplate>
<Select TValue="string" @bind-SelectedValue="@ItemTypeFilter">
@foreach (string type in ItemTypeList)
{
<SelectItem Value="@type">@type</SelectItem>
}
</Select>
</FilterTemplate>
</DataGridSelectColumn>
<DataGridSelectColumn TItem="ItemListItem" Field="@nameof(ItemListItem.Description)" Caption="Item Description" Sortable="true" TextAlignment="TextAlignment.Left" />
<DataGridSelectColumn TItem="ItemListItem" Field="@nameof(ItemListItem.StatusShortDesc)" Caption="Status" Sortable="true">
<FilterTemplate>
// This filter should replace the default textbox with a dropdown listing only specific values
<Select TValue="string" @bind-SelectedValue="@ItemStatusFilter">
@foreach(string status in ItemStatusList)
{
<SelectItem Value="@status">@status</SelectItem>
}
</Select>
</FilterTemplate>
</DataGridSelectColumn>
<DataGridNumericColumn TItem="ItemListItem" Field="@nameof(ItemListItem.ItemPrice)" Caption="Amount" Sortable="false" TextAlignment="TextAlignment.Right" DisplayFormat="{0:C}" />
</DataGridColumns>
</DataGrid>
}
@code {
private List<ItemListItem> ItemListItems;
private ItemListItem selectedItem;
private List<string> ItemStatusList;
private string ItemStatusFilter;
private List<string> ItemTypeList;
private string ItemTypeFilter;
protected override async Task OnInitializedAsync()
{
ItemListItems = await _items.GetItems();
ItemTypeList = await _items.GetItemTypes();
ItemStatusList = await _items.GetItemStatuses();
}
}
@page”/ItemList
@使用DataAccessLibrary
@使用Blazorise
@使用Blazorise.DataGrid
@注入项目列表项;
项目表
@如果(ItemListItems为空)
{
加载
}
其他的
{
没有找到任何项目!
编辑
//此筛选器应使用仅列出特定值的下拉列表替换默认文本框
@foreach(ItemTypeList中的字符串类型)
{
@类型
}
//此筛选器应使用仅列出特定值的下拉列表替换默认文本框
@foreach(ItemStatusList中的字符串状态)
{
@地位
}
}
@代码{
私人物品清单;
private Item ListItem selectedItem;
私有列表项状态列表;
私有字符串ItemStatusFilter;
私有列表项类型列表;
私有字符串ItemTypeFilter;
受保护的重写异步任务OnInitializedAsync()
{
ItemListItems=等待_items.GetItems();
ItemTypeList=wait_items.GetItemTypes();
ItemStatusList=wait_items.GetItemStatuses();
}
}