Dynamics 365点击Assign按钮触发Javascript的实现方案咨询
实现示例
可通过扩展Dynamics 365命令栏按钮的执行逻辑实现需求,以下是可直接参考的实现方案:
步骤1:修改命令栏Assign按钮配置
- 进入Power Apps制作平台,打开对应业务表的命令栏编辑界面,选择主表单/主网格对应的Assign按钮,将按钮的默认操作修改为「执行JavaScript」。
- 提前将自定义JS代码上传为Dynamics 365的Web资源,在按钮配置页选择该Web资源,配置调用的函数名为
customAssignHandler,添加参数PrimaryControl传递上下文。
步骤2:自定义JS代码示例
function customAssignHandler(primaryControl) { const formContext = primaryControl; // 打开原生分配对话框 Xrm.Navigation.openDialog( "Assign", { width: 450, height: 350 }, { entityId: formContext.data.entity.getId().replace(/[{}]/g, ""), entityTypeName: formContext.data.entity.getEntityName() } ).then(function (dialogOutput) { // 获取分配对话框中的「分配至用户或团队」查找控件 const assigneeLookup = dialogOutput.getControl("ownerid"); if (assigneeLookup) { // 给查找控件绑定预搜索事件,注入过滤规则 assigneeLookup.addPreSearch(function () { // 示例1:过滤用户,仅显示未禁用的用户 const userFilter = "<filter type='and'><condition attribute='isdisabled' operator='eq' value='0' /></filter>"; assigneeLookup.addCustomFilter(userFilter, "systemuser"); // 示例2:过滤团队,仅显示名称包含「业务组」的团队 const teamFilter = "<filter type='and'><condition attribute='name' operator='like' value='%业务组%' /></filter>"; assigneeLookup.addCustomFilter(teamFilter, "team"); }); } }); }
注意事项
- 部分旧版本Dynamics 365的分配对话框查找控件ID为
systemuserid,如果代码不生效可通过浏览器F12调试工具确认实际控件ID。 - 可根据业务需求自行修改FetchXml过滤片段,支持按业务单位、用户角色、团队类型等多维度过滤。
- 所有配置完成后需要发布自定义项,清除浏览器缓存后再测试效果。
内容的提问来源于stack exchange,提问作者Kostas Karagiannis
相关产品推荐
相关产品推荐

