U9的UI插件开发Card功能区上客开的按钮不能正常显示

做一个客开的测试过程中,碰到一个长期没有解决掉的问题,U9客开的按钮可以在3个地方开放出来,分别是1, 工具栏上添加,2,功能区添加,3,功能区下拉列表上添加 。功能区上的添加的按钮一直不能正常显示出来,分析了很久。为此手上的一个项目迟缓了一周没有进度。

用友对外公布的资料中有说到是一行中允许的按钮数量有限制。需要后台修改UIModel才可以。UBF去上修改标准的元数据方法没有找到合理的方法。于是想利用AI工具是否可以给一个破解限制的方案。以下是元宝给出的"答案"。

在 U9 的 UI 插件开发中,Card 上的按钮"加进去却不显示",通常不是系统有硬性按钮数量上限 ,而是布局容器(GridLayout)的网格列数不够插入位置冲突导致的。不存在官方公开的"按钮数量限制",也不需要(也无法)去"破解"。

核心原因:GridLayout 的列数瓶颈

U9 的 Card 容器默认使用 GridLayout(网格布局)。你在代码里调用的 CommonFunction.Layout(container, ctrl, x, y),本质是把控件放到第 x列、第 y行。

  • 问题点 :Card 在元数据设计时有固定的网格列集合(Grid Column Definitions)。比如默认可能只有 7 列(0~6)。

  • 现象 :当你用 CommonFunction.Layout(card, btn, 28, 0)这样的代码时,列索引 28远远超出了 Card 预设的列数。控件其实已经被 AddControls集合里了,但因为超出了布局网格的范围,渲染时被截断或不显示

为什么会有"数量限制"的传言

这其实是列数限制带来的错觉:

  • 假设一行只有 7 列,每列放 1 个按钮,你最多"看得到"7 个。

  • 你加第 8 个按钮时,如果还放在合法列范围内(比如覆盖原有位置),可能会显示但把旧的挤掉或重叠;如果放在非法列(如列 28),就直接看不到。

  • 社区不少案例提到 Layout(card, btn, 8, 0)这类写法(列索引 = 按钮个数 × 2),一旦超过设计器预设列数,按钮就会消失

因为没有找到UBF编辑U9元数据的方法,几乎是要绝望放弃在Card功能区上放按钮方案时,柳暗花明又一村的事情发生了!...

措施:在【修改部件】的操作中,将客开按钮位置移动下位置,如图所示,实际上改变的SQL数据表中的按钮的位置记录,神奇的是按钮出来了!

最终效果如下

相关推荐
Scott9999HH4 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
码智社5 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
AI云海5 小时前
python 列表、元组、集合和字典
开发语言·python
萧瑟余晖6 小时前
JDK 26 新特性详解
java·开发语言
马优晨7 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
人邮异步社区9 小时前
怎么把C语言学到精通?
c语言·开发语言
心平气和量大福大9 小时前
C#-WPF-控件-TextBox 数据绑定
开发语言·c#·wpf
ttwuai10 小时前
Cursor 生成 CRUD 后,Go 后台接口别只测 200:JWT、RBAC 和 tenant_id 怎么验
开发语言·后端·golang
এ慕ོ冬℘゜10 小时前
前端基础:什么是时间戳?JS获取时间戳三种方法与实战用途
开发语言·前端·javascript
执明wa10 小时前
LayoutInflater详解: XML是如何变成View的?
android·xml·开发语言·android studio