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

Dynamics 365中PCF对话框控件点击后打开新标签而非同页弹窗问题排查

Dynamics 365 PCF控件弹窗打开问题排查与解决

问题场景

在Dynamics视图页面点击功能区按钮触发PCF对话框控件时,控件意外在新标签页打开,而非预期的同页覆盖弹窗。已尝试修改target和position参数但无效,相关代码如下:

function LaunchControl() {
    // Centered Dialog
    var pageInput = {
      pageType: "control",
      controlName: "bonj_pcfControls.DialogControl",
    
    };
    var navigationOptions = {
      target: 2,
      position: 1,
      width: { value: 50, unit: "%" },
      title: "Time Off Request",
    };
    Xrm.Navigation.navigateTo(pageInput, navigationOptions)
      .then(function () {
        // Called when the dialog closes
      })
      .catch(function (error) {
        // Handle error
      });
  }

排查与解决步骤

1. 确认PCF控件的注册类型

确保PCF控件是注册为**自定义控件(Custom Control)**并关联到实体表单,而非单纯部署为Web资源。若控件仅作为Web资源存在,navigateTo的control类型无法正确识别,会默认在新标签页打开。

2. 修正target参数的使用方式

虽然代码中使用了target:2(对应弹窗枚举值),但直接使用枚举常量更可靠,避免数字值被上下文覆盖或误解:

var navigationOptions = {
  target: Xrm.Navigation.NavigateTarget.Dialog, // 替代数字2
  position: 1,
  width: { value: 50, unit: "%" },
  title: "Time Off Request",
};

3. 补充entityName参数到pageInput

部分Dynamics环境要求指定关联实体名称才能正确渲染控件弹窗,修改pageInput:

var pageInput = {
  pageType: "control",
  controlName: "bonj_pcfControls.DialogControl",
  entityName: "your_entity_logical_name" // 替换为控件关联的实体逻辑名称
};

4. 验证环境版本兼容性

navigateTo支持以弹窗形式打开PCF控件的功能要求Dynamics 365 Online版本9.1.0.1000及以上。若环境版本过低,该功能不支持,会自动降级为新标签页打开。

5. 检查功能区按钮配置

确保功能区按钮的命令类型为自定义JavaScript,而非“打开URL”。若按钮配置为URL跳转,会直接忽略navigateTo的弹窗设置,强制在新标签页打开。

测试建议

在浏览器控制台直接执行LaunchControl()函数:

  • 若控制台执行能正常弹出窗口,说明功能区按钮的命令配置存在问题(如按钮触发逻辑错误);
  • 若仍在新标签页打开,重点排查PCF控件的注册方式和环境版本。

内容的提问来源于stack exchange,提问作者Teja Vavilala

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 22:30:34