我有这个网格:
@if (collections != null && collections.Roles != null &&
collections.Roles.Count() > 0 && selectedRoles != null)
{
<MudBlazor.MudDataGrid T="Role" MultiSelection="true"
Items="@collections.Roles"
@bind-SelectedItems="selectedRoles">
<Columns>
<PropertyColumn Property="x => x.Name" Title="Caption"
Style="width: 100px;" />
<MudBlazor.SelectColumn T="Role" ShowInFooter="false" />
</Columns>
</MudBlazor.MudDataGrid>
}
当我选择一些项目并单击“提交”时,网格起作用,正确发送选定的项目。
但是当页面首次加载时我会这样做:
HashSet<Role> selectedRoles = null;
protected override async Task OnInitializedAsync()
{
await base.OnInitializedAsync();
await GetPerson();
selectedRoles = person.User.Roles.ToHashSet<Role>();
StateHasChanged();
}
但是,当页面首次加载时,数据网格中没有选择任何角色,并且
person.User.Roles.ToHashSet<Role>();
代码中存在数据网格未显示的项目。
我在 oninitialized 方法中使用此代码解决了我的问题:
selectedRoles = person.User.Roles.Select(r =>
collections.Roles.First(r2 => r2.Id == r.Id)).ToHashSet<Role>();
角色必须是同一被选择的对象。