咨询:模型驱动应用中表单退出时关闭侧边窗格的实现方法
模型驱动应用:离开表单时自动关闭侧边窗格的实现方案
问题背景
在模型驱动应用中,打开Ideas表记录表单时会自动加载展示当前记录详情的自定义页面侧边窗格,但用户点击返回按钮、通过左侧菜单切换至其他表/视图时,侧边窗格仍保持打开状态,显示已关闭记录的内容。尝试将关闭脚本绑定至表单OnSave事件仅在「保存并关闭」时生效,且未找到表单的OnExit/OnClose/OnUnload处理入口。
解决方案
方法1:利用表单OnUnload事件触发关闭
模型驱动应用的表单实际提供了OnUnload事件,该事件会在用户离开表单(包括返回网格、切换菜单、打开其他记录等场景)时触发,具体配置步骤如下:
- 打开Ideas表的表单设计界面
- 切换至「事件」选项卡,找到「表单」区域下的「OnUnload」事件
- 添加包含
closeAllPanes函数的脚本库,选择该函数作为事件处理程序 - 勾选「传递执行上下文」选项,保存并发布表单
方法2:全局监听导航事件(全局生效)
若需要在整个应用中,任何页面导航操作都自动关闭侧边窗格,可通过全局导航事件监听实现:
- 在现有脚本库中添加全局监听注册函数:
function registerNavigationListener() { // 监听应用内的导航事件 Xrm.App.addGlobalEventHandler("navigate", function() { closeAllPanes(); }); }
- 将
registerNavigationListener函数绑定至Ideas表单的「OnLoad」事件(或应用全局OnLoad事件),确保页面加载时完成监听注册
已验证的关闭脚本
function closeAllPanes() { var allPanes = Xrm.App.sidePanes.getAllPanes(); allPanes.forEach(function(pane) { pane.close().catch(function(error) { console.error("关闭侧边窗格出错: ", error); }); }); console.log("侧边窗格已关闭。") }
注意事项
- 确保脚本库已正确上传并发布至环境
- 测试时打开浏览器开发者工具,查看控制台输出确认函数是否触发
- 若使用OnUnload事件,需确认表单未禁用该事件的默认行为
内容的提问来源于stack exchange,提问作者petrhellmich
相关产品推荐
相关产品推荐

