具有多重选择的MudDataGrid不能以两种方式工作,@bind-SelectedItems =“selectedRoles”

问题描述 投票:0回答:1

我有这个网格:

@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>();
代码中存在数据网格未显示的项目。

datagrid blazor-webassembly mudblazor two-way-binding
1个回答
0
投票

我在 oninitialized 方法中使用此代码解决了我的问题:

selectedRoles =  person.User.Roles.Select(r => 
     collections.Roles.First(r2 => r2.Id == r.Id)).ToHashSet<Role>();

角色必须是同一被选择的对象。

© www.soinside.com 2019 - 2024. All rights reserved.