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
相关产品推荐
相关产品推荐

