BootstrapBlazor v10.6.2:EditorForm 分组排序与 Table 列可见性修复

2026-05-22 31 预计阅读时间:1 分钟
来源:oschina.net AI 摘要 原文链接

免责声明:本文为 AI 摘要整理,建议结合原文阅读。摘要可能省略上下文、版本差异或边界条件,不作为官方说明。

预计阅读时间:6 分钟

Blazor 生态里,Bootstrap 样式的 UI 组件库选择不算多,BootstrapBlazor 是其中维护最活跃的一个。v10.6.2 是一个偏修复的小版本,但涉及的两个改动——EditorForm 的分组排序和 Table 的列可见性重置——都是日常开发中高频使用的功能,值得快速过一遍。

修复了什么

EditorForm 分组排序回归

EditorForm 支持按分组渲染表单字段,分组顺序由 GroupOrder 参数控制。之前的某个版本中,分组排序逻辑被改动,导致依赖 GroupOrder 设定顺序的项目表单布局出现错乱。v10.6.2 把排序行为恢复到 GroupOrder 参数驱动的模式,分组字段再次按开发者指定的顺序排列。

这对复杂表单场景很关键——比如一个编辑页面同时包含"基本信息"、"联系方式"、"权限配置"三个分组,顺序颠倒会让用户填写流程变得别扭。

Table 列可见性重置方法恢复

Table 组件提供了 ResetVisibleColumns 方法,用于把用户手动隐藏的列一次性恢复到默认可见状态。此前该方法逻辑被修改后行为异常,调用后列状态没有正确还原。本次修复恢复了原有逻辑,一键重置再次可用。

这个功能在数据表格交互中很实用:用户在探索数据时隐藏了若干列,想回到初始视图时,不需要逐列勾选,一个方法调用即可。

实际使用示例

下面用一个最小项目演示这两个修复点涉及的功能。假设你已经有一个 Blazor Server 或 WebApp 项目。

EditorForm 分组排序

// Model: 一个带分组的用户信息类
public class UserProfile
{
    // 基本信息
    [Display(Name = "用户名", GroupName = "基本信息", GroupOrder = 1)]
    public string UserName { get; set; }

    [Display(Name = "邮箱", GroupName = "基本信息", GroupOrder = 1)]
    public string Email { get; set; }

    // 联系方式
    [Display(Name = "手机号", GroupName = "联系方式", GroupOrder = 2)]
    public string Phone { get; set; }

    [Display(Name = "地址", GroupName = "联系方式", GroupOrder = 2)]
    public string Address { get; set; }

    // 权限配置
    [Display(Name = "角色", GroupName = "权限配置", GroupOrder = 3)]
    public string Role { get; set; }

    [Display(Name = "是否启用", GroupName = "权限配置", GroupOrder = 3)]
    public bool IsActive { get; set; } = true;
}
<!-- Razor 页面中使用 EditorForm -->
<EditorForm Model="@profile" ShowGroup="true" />

@code {
    private UserProfile profile = new();
}

GroupOrder 值决定了分组在页面上从上到下的排列:1 → 基本信息,2 → 联系方式,3 → 权限配置。v10.6.2 修复后,这个顺序不再被打乱。

Table 列可见性重置

<!-- Razor 页面中使用 Table -->
<Table @ref="userTable"
       Items="@users"
       ShowColumnList="true">

    <TableColumn @bind-Field="@context.UserName" />
    <TableColumn @bind-Field="@context.Email" />
    <TableColumn @bind-Field="@context.Phone" Visible="false" />
    <TableColumn @bind-Field="@context.Role" />

</Table>

<Button Text="重置列可见性" OnClick="ResetColumns" />

@code {
    private Table<UserProfile>? userTable;
    private List<UserProfile> users = new();

    private async Task ResetColumns()
    {
        // v10.6.2 修复后,此方法正确恢复所有列到默认可见状态
        userTable?.ResetVisibleColumns();
    }
}

用户通过表格右上角的列选择器隐藏了若干列后,点击"重置列可见性"按钮,ResetVisibleColumns() 会把所有列恢复到初始状态,包括代码中标记 Visible="false" 的列也会回到其声明时的默认值。

升级与注意事项

  • 升级方式:NuGet 包 BootstrapBlazor 更新到 10.6.2 即可,无 API 变更,纯行为修复,不需要改动现有代码。
  • 如果你之前绕过了 bug:有些项目可能为了规避分组排序问题,手动在 OnInitialized 中对字段列表做了排序。升级后建议移除这类 workaround,让 GroupOrder 正常生效,减少维护负担。
  • 列可见性的默认值约定ResetVisibleColumns 恢复的是组件声明时的初始状态,不是"全部可见"。如果你某个列声明了 Visible="false",重置后它仍然是隐藏的——这是设计意图,不是 bug。

v10.6.2 虽然只是两个 bug fix,但都踩在实际使用痛点上。如果你的项目用了 EditorForm 分组或 Table 列选择器,建议尽快升级。


相关推荐