如何在Acumatica报价显示页面(SO301000)添加带链接的自定义字段
在Acumatica SO301000页面实现文本框链接跳转的方案
方式一:直接通过DAC字段属性配置(最省事)
如果你的链接文本框是自定义字段,直接在DAC里给字段加个属性就能自动转成可点击链接,不用写额外JS:
[PXDBString(255, IsUnicode = true)] [PXUIField(DisplayName = "网站链接")] [PXStringAttribute(InputMask = "<a href=\"{0}\" target=\"_blank\">{0}</a>")] public virtual string UsrWebsiteLink { get; set; } public abstract class usrWebsiteLink : PX.Data.BQL.BqlString.Field<usrWebsiteLink> { }
页面渲染时,文本框里的内容会直接变成带跳转的链接,点击就会打开新窗口访问目标网站。
方式二:通过Graph扩展注入JS脚本
要是用的是系统原有字段,或者需要更灵活的交互逻辑,就写个Graph扩展类,在页面加载时注入你的JS:
public class SOOrderEntryExtension : PXGraphExtension<SOOrderEntry> { public override void Initialize() { base.Initialize(); // 替换成实际的字段ID,可通过浏览器F12工具查看 PXTrace.WriteInformation(@" <script type='text/javascript'> window.addEventListener('load', function() { const linkField = document.getElementById('edSOOrder_UsrWebsiteLink'); if (linkField && linkField.value) { linkField.addEventListener('click', () => { window.open(linkField.value, '_blank'); }); // 给文本添加链接样式,提示可点击 linkField.style.color = '#007bff'; linkField.style.textDecoration = 'underline'; linkField.style.cursor = 'pointer'; } }); </script>"); } }
方式三:在自定义项目里添加屏幕脚本
- 打开Acumatica的自定义项目编辑器,找到Screens下的SO.30.10.00,点击Script标签。
- 粘贴你的JS代码,用
px.allocateTimeSlot确保脚本在页面加载完成后执行:
px.allocateTimeSlot(function() { // 用属性选择器匹配字段,避免硬编码ID const linkField = document.querySelector('[id*="UsrWebsiteLink"]'); if (!linkField) return; linkField.addEventListener('click', function() { if (this.value.trim()) { window.open(this.value, '_blank'); } }); // 优化视觉样式 linkField.style.color = '#007bff'; linkField.style.textDecoration = 'underline'; linkField.style.cursor = 'pointer'; });
- 发布自定义项目,刷新页面即可生效。
注意事项
- 字段ID要准确,可通过浏览器F12开发者工具查看元素ID确认。
- 如果跳转外部网站,需确认Acumatica的系统管理->网站偏好设置中未限制目标域名。
- 测试前清除浏览器缓存,确保自定义配置已加载。
内容的提问来源于stack exchange,提问作者Malak
相关产品推荐
相关产品推荐

