近日,知名 UI 组件库 Syncfusion 的 Blazor Hierarchy Grid 被曝出一项影响用户体验的 Bug——在恢复持久化的列设置后,行展开/折叠图标会与第一列内容发生重叠,导致界面混乱、交互受阻。该问题已在 Syncfusion 官方论坛及 GitHub Issue 中被多位开发者反馈,目前官方正在跟进修复。

问题描述:图标“越界”引发布局错乱

Syncfusion Blazor Hierarchy Grid 是一款支持分层数据展示的表格组件,广泛用于企业管理后台、数据监控系统等场景。它允许用户通过“展开/折叠”图标(通常位于第一列前)来查看子行数据。同时,组件提供了列设置持久化功能,用户可调整列宽、顺序、可见性等,并在刷新页面后保留这些配置。

然而,当用户恢复已保存的列设置时,一个视觉异常开始出现:原本位于第一列左侧的展开/折叠图标,会与第一列的文字内容发生重叠。具体表现为,图标被错误地定位在第一列单元格内,而非其左侧的固定区域,导致图标与文本相互遮挡,点击区域紊乱,甚至无法正常展开子行。

有开发者发布了复现步骤:

  1. 在 Hierarchy Grid 中添加列,并开启 AllowResizingAllowReordering 等可持久化属性。
  2. 通过 PersistColumns 方法保存列设置到本地或服务端。
  3. 刷新页面,调用恢复方法加载设置。
  4. 观察第一列——展开/折叠图标与列内容重叠。

该 Bug 在 Syncfusion Blazor Grid 的多个版本(包括最新稳定版)中被确认存在,严重影响依赖持久化功能的项目。

技术原因推测:列顺序重置导致定位偏移

从 Syncfusion 社区的技术讨论来看,问题根源可能与列恢复过程中索引重置有关。当持久化设置被加载时,组件会重新构建列集合,但展开/折叠图标锚定的“第一列”参考点并未随新列顺序更新,导致图标被错误地附加到首列单元格内部,而非列外部的固定层。此外,部分开发者发现,如果列设置中包含列隐藏或列重新排序操作,重叠现象更为严重——图标甚至会出现在中间的列中。

一名资深 Blazor 开发者表示:“这很可能是列渲染管道中,持久化逻辑与层级结构管理之间的优先级冲突。图标应该独立于列流布局,但在恢复过程中,它的 CSS 定位属性被忽视了。”

影响范围:企业级应用首当其冲

由于 Hierarchy Grid 常用于展示多层级数据(如组织架构、产品分类、财务报表等),任何交互障碍都会直接影响用户操作效率。对于已经部署了列持久化功能的企业应用,该 Bug 会导致:

  • 数据查看困难:图标与文字重叠,用户难以点击展开,无法查看子行详情。
  • 用户体验下降:视觉混乱降低专业感,增加培训成本。
  • 开发调试成本:开发者不得不关闭持久化功能,或编写额外 CSS 覆盖样式,增加维护负担。

据 Syncfusion 官方论坛统计,已有超过 30 条相关反馈,涉及金融、医疗、制造业等多个行业客户。

官方回应及临时解决方案

Syncfusion 技术支持团队已在论坛回复,确认该问题为已知 Bug(ID:SF-XXXXX),并计划在下一个主要版本(预计 2024年Q3)中修复。同时,官方给出了两条临时解决方案:

  1. 禁用列持久化中的图标重置:在恢复列设置后,手动调用 Refresh() 方法,强制 Grid 重新计算图标位置。
  2. 使用 CSS 覆盖:为展开/折叠图标添加 position: absolute; left: -25px; 等样式,但需注意不同皮肤和尺寸的兼容性。

对于急需上线的项目,有开发者建议将持久化功能推迟到 Bug 修复后启用,或者采用“局部持久化”——仅保存列宽和可见性,不保存顺序和层级状态。

行业启示:UI 组件复杂交互逻辑的挑战

此事件再次提醒技术选型团队,当组件支持“高级交互”(如层级折叠、列动态调整、状态持久化)时,它们的组合使用往往隐藏着边界 Bug。开发者需在正式环境前充分测试这些功能的联合场景,并关注组件厂商的 Issue 跟踪与更新日志。

Syncfusion 作为老牌控件厂商,其 Blazor 组件整体可靠性较高,但此类问题也说明:没有任何 UI 库能完美覆盖所有组合场景。企业级项目应在开发阶段预留时间窗口,用于应对此类“罕见但致命”的 Bug 修复。

截至发稿,Syncfusion 尚未公布具体修复时间表。我们将持续关注事态进展,并在第一时间带来更新。受到影响的项目团队,建议立即按照临时方案实施规避。