You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 09:45:32