Dynamics 365 CRM:限制UI中显示的可用语言
限制Dynamics 365 CRM用户可选语言的实用方案
1. 修改系统视图直接过滤可选语言
Dynamics 365用户选语言时调用的是Language实体数据,你可以直接修改系统默认的语言视图,添加过滤条件只保留允许的语言记录。这样下拉菜单里只会显示合规选项,从源头堵死无效选择。
- 操作步骤:打开高级查找,选择
Language实体,添加过滤规则(比如按语言代码筛选,中文是2052、英文是1033),把筛选后的视图保存为系统视图,替换用户表单里语言字段默认使用的视图即可。
2. 前端JS拦截+实时提示
不想修改系统视图的话,给用户表单加一段JavaScript脚本,用户选择禁止语言时立刻弹出提示并重置选项。
示例代码:
function checkLanguageSelection(executionContext) { const formContext = executionContext.getFormContext(); const selectedLangId = formContext.getAttribute("uilanguageid").getValue()?.[0]?.id; // 替换为你允许的语言实体GUID列表 const allowedLangIds = ["{允许的语言1 GUID}", "{允许的语言2 GUID}"]; if (selectedLangId && !allowedLangIds.includes(selectedLangId)) { alert("抱歉,这个语言不能选,请从指定列表里挑选。"); // 重置为空或默认语言 formContext.getAttribute("uilanguageid").setValue(null); } }
- 操作:把这段代码添加到用户表单的
uilanguageid字段的On Change事件里,替换allowedLangIds为实际的合法语言GUID。
3. 优化插件拦截逻辑,显示明确提示
之前用插件抛出InvalidPluginExecutionException没反馈,是因为没正确设置提示内容。调整插件逻辑即可:
- 将插件注册在用户实体的
Update消息上,执行时机设为PreValidation或PreOperation。 - 抛出异常时直接写清提示信息:
throw new InvalidPluginExecutionException("你选的语言未被授权,请选择允许的语言。");
这样用户保存时会弹出带明确提示的错误框,能清楚知道问题所在。
内容的提问来源于stack exchange,提问作者Lars-Pascal Körber
相关产品推荐
相关产品推荐

