You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor Server中循环渲染DevExpress DxTagBox绑定值重复问题求助

问题分析与解决方案

问题核心在于所有循环生成的DxTagBox组件都绑定到同一个RolesID_New集合变量,导致所有组件的选中值完全同步,任何一个组件的选择操作都会影响其他所有组件。

修改方案

需要为每个Role实例分配独立的选中值集合,通过字典维护每个Role对应的选中用户数据:

1. 替换绑定变量定义

在@code部分,将单一的RolesID_New替换为字典类型,键为Role的ID,值为对应该Role的选中用户ID集合(类型需与USR_NR匹配,以下假设USR_NR为int类型):

// 假设Role的ID类型为int,USR_NR类型为int
Dictionary<int, IEnumerable<int>> RoleSelectedUsers { get; set; }

2. 初始化字典

在组件初始化方法中,为每个Role初始化对应的空选中集合:

protected override async Task OnInitializedAsync()
{
    // 加载Roles数据(保留原有加载逻辑)
    Roles = await LoadRolesFromDatabase();
    
    // 为每个Role初始化空的选中用户集合
    RoleSelectedUsers = Roles.ToDictionary(role => role.ID, _ => Enumerable.Empty<int>());
}

3. 修改循环中的DxTagBox绑定

循环渲染时,每个DxTagBox绑定到字典中当前Role对应的条目:

@foreach(var inputRoles in Roles)
{
    <div class="flRow">
        <DxTagBox Data="@User"
                  TextFieldName="@nameof(USER.USR_NAME)"
                  ValueFieldName="@nameof(USER.USR_NR)"
                  @bind-Values="@RoleSelectedUsers[inputRoles.ID]"
                  NullText="@inputRoles.InfoCard_Roles"
                  ClearButtonDisplayMode="DataEditorClearButtonDisplayMode.Auto">
            <DxListEditorColumn FieldName="@nameof(USER.VORNAME)" Caption="Vorname"/>
            <DxListEditorColumn FieldName="@nameof(USER.NAME)" Caption="Nachname"/>
        </DxTagBox>
        <p class="w-25">@inputRoles.RName</p>
    </div>
}

4. 类型适配说明

如果USR_NR为其他类型(如string、Guid),只需将字典值的类型替换为对应类型即可。

修改后,每个DxTagBox组件会绑定到独立的选中值集合,彼此的选择操作不会互相干扰。

内容的提问来源于stack exchange,提问作者Stephan Mayer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 14:22:20