Dynamics子网格行自定义超链接实现需求咨询
Dynamics子网格行自定义超链接实现需求咨询
我完全懂你的困扰——自带的超链接字段会把完整URL暴露出来,完全不符合只显示发票号的需求,下面给你两种实用的解决方案,都能实现「只展示发票号、点击跳转到外部窗口」的效果:
方法一:用JavaScript自定义子网格列渲染(快速落地)
这种方法不用复杂开发,写一小段脚本就能搞定:
- 第一步:先准备两个字段:一个是发票号字段(用来展示纯文本),另一个是隐藏的文本字段(专门存完整跳转URL,不需要在子网格里显示)
- 第二步:创建一个JavaScript类型的Web资源,把下面的代码粘贴进去,记得替换代码里的子网格名称、发票号字段逻辑名、URL字段逻辑名:
function customizeSubgridInvoiceLinks(executionContext) { const formContext = executionContext.getFormContext(); const subgrid = formContext.getControl("your_subgrid_unique_name"); // 替换成你的子网格名称 if (subgrid) { // 监听子网格加载完成事件 subgrid.addOnLoad(() => { const gridRows = subgrid.getGrid().getRows(); gridRows.forEach(row => { const entity = row.getData().getEntity(); const invoiceNum = entity.getAttribute("invoice_number").getValue(); // 替换成发票号字段逻辑名 const jumpUrl = entity.getAttribute("invoice_target_url").getValue(); // 替换成存储URL的字段逻辑名 if (invoiceNum && jumpUrl) { // 找到对应列并替换成超链接 const invoiceCell = row.getCell("invoice_number"); if (invoiceCell) { const linkHtml = `<a href="${jumpUrl}" target="_blank" style="text-decoration:underline;color:#0078d4;">${invoiceNum}</a>`; invoiceCell.setCellValue(linkHtml); } } }); }); } }
- 第三步:把这个脚本添加到表单的
OnLoad事件里,传递executionContext参数,保存发布后就能看到效果了
方法二:用PCF自定义控件(长期稳定方案)
如果你的环境是Dynamics 365 Online,更推荐用PCF控件,符合平台规范也方便后续维护:
- 开发一个简单的PCF控件,设置两个输入属性:一个接收发票号文本,一个接收跳转URL
- 控件渲染时只展示发票号文本,给文本添加点击事件,点击时用
window.open()打开外部窗口 - 把这个控件绑定到子网格的发票号列上,配置好对应的输入属性即可
额外提醒
- 用脚本方案时,要确保存储URL的字段是隐藏状态,别在子网格里显示出来
- 两种方法都建议在不同浏览器里测试下,确保跳转功能正常
备注:内容来源于stack exchange,提问作者livrexify
相关产品推荐
相关产品推荐

