MudBlazor Data Grid持久化状态后排序序号不显示问题求助
解决MudBlazor DataGrid恢复状态后排序序号丢失的问题
问题根源:你通过SortDefinitionsBind字典中转排序定义,但字典是无序集合,会丢失SortDefinitions原本的优先级顺序。而MudBlazor的排序序号是根据SortDefinitions列表的先后顺序生成的,顺序错乱后序号自然无法正常显示。
修复方案
- 移除
GridState<T>中的SortDefinitionsBind字典属性,直接用SortDefinitions列表绑定DataGrid - 保存/恢复状态时直接操作
SortDefinitions列表,保证顺序不变
修改后的代码
GridState类
public class GridState<T> { public int Page { get; set; } = 0; public int PageSize { get; set; } = 10; public string? SearchText { get; set; } public ICollection<SortDefinition<T>>? SortDefinitions { get; set; } = new List<SortDefinition<T>>(); public ICollection<IFilterDefinition<T>>? FilterDefinitions { get; set; } public HashSet<T> SelectedItems { get; set; } = new(); }
MudDataGrid组件绑定
<MudDataGrid T="Model" @ref="_grid" LoadingProgressColor="Color.Primary" Virtualize="false" ServerData="ServerDataFunc" RowClick="HandleRowDoubleClick" MultiSelection="true" CurrentPage="GridStateService.State.Page" RowsPerPage="GridStateService.State.PageSize" Filterable="true" SortDefinitions="@GridStateService.State.SortDefinitions" @bind-SelectedItems="SelectedModel">
补充说明
如果之前用字典是为了过滤SortBy为空的无效排序项,可在保存状态时提前处理:
// 保存状态前过滤无效项 GridStateService.State.SortDefinitions = _grid.SortDefinitions .Where(x => !string.IsNullOrWhiteSpace(x.SortBy)) .ToList();
内容的提问来源于stack exchange,提问作者Geo
相关产品推荐
相关产品推荐

