如何在MudTable的ToolBarContent中添加筛选第二行且不挤压首行
解决方案:在MudTable ToolBar中添加筛选Chip行
要解决首行被挤走的问题,核心是将ToolBarContent的内容垂直分块布局,避免所有元素挤在同一行。可以用MudBlazor自带的MudStack组件(设置垂直方向),或者直接用Flex布局的div容器,以下是修改后的完整ToolBarContent代码:
<ToolBarContent> <!-- 垂直容器,将内容分成两行 --> <MudStack Direction="Direction.Column" Spacing="2" Class="w-100"> <!-- 第一行:标题 + 搜索框 --> <MudStack Direction="Direction.Row" AlignItems="AlignItems.Center" Class="w-100"> <MudText Typo="Typo.h6">Test</MudText> <MudSpacer /> <MudTextField @bind-Value="_searchString" Placeholder="Search" Immediate="true" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.Search" IconSize="Size.Medium" Class="mt-0" /> </MudStack> <!-- 第二行:筛选ChipSet --> <MudChipSet @bind-SelectedValues="_selectedFilters" MultiSelection="true"> <MudChip Text="待分析" Value="Pending" /> <MudChip Text="已处理" Value="Processed" /> <MudChip Text="已修复" Value="Fixed" /> <!-- 根据需求添加更多筛选Chip --> </MudChipSet> </MudStack> </ToolBarContent>
关键说明:
- 垂直容器:外层
MudStack设置Direction="Direction.Column",让内部的两行内容垂直排列,避免挤压。同时设置w-100确保宽度占满ToolBar。 - 第一行布局:内层
MudStack(Direction.Row)保持原有的标题、Spacer、搜索框的水平布局,确保和原来的样式一致。 - 筛选Chip逻辑:绑定
_selectedFilters集合,在FilterFunc1中同时结合搜索字符串和选中的Chip值进行过滤,示例逻辑如下:
private List<string> _selectedFilters = new(); private string _searchString = ""; private bool FilterFunc1(CrashInformation crash) { // 先处理搜索框过滤 if (!string.IsNullOrWhiteSpace(_searchString)) { if (!crash.Name.Contains(_searchString, StringComparison.OrdinalIgnoreCase) && !crash.Crashpointer.Contains(_searchString, StringComparison.OrdinalIgnoreCase)) { return false; } } // 再处理Chip筛选 if (_selectedFilters.Any()) { return _selectedFilters.Contains(crash.State); // 假设State是对应Chip的字段 } return true; }
效果说明:
修改后,ToolBar会呈现两行布局:第一行保留原有的标题和搜索框,第二行展示筛选Chip组,不会出现首行被挤走的问题,完全匹配预期效果。
内容的提问来源于stack exchange,提问作者Deto24
相关产品推荐
相关产品推荐

