如何在Dynamics 365新建表单中获取传入的formParameters参数
在Dynamics 365快速创建表单中获取openForm传递的参数
你传递的formParameters并不会直接包含在表单的executionContext里,而是会被转换成URL查询参数传递到快速创建表单中。要获取这些参数,需要从表单的URL查询字符串里提取,具体方法如下:
解决方案:在快速创建表单的OnLoad事件中获取参数
- 给目标实体(
new_qrecipemasteritem)的快速创建表单添加OnLoad事件,绑定如下函数,并确保勾选「Pass Execution Context as first parameter」:
function onQuickCreateFormLoad(executionContext) { // 获取表单上下文 var formContext = executionContext.getFormContext(); // 获取URL中的所有查询参数 var queryParams = Xrm.Utility.getGlobalContext().getQueryStringParameters(); // 提取你传递的viewName参数 var receivedViewName = queryParams["viewName"]; if (receivedViewName) { // 这里执行你需要的逻辑,比如打印到控制台或赋值给字段 console.log("收到的视图名称:", receivedViewName); // 示例:将值赋值给表单字段(替换成你的实际字段逻辑名称) // formContext.getAttribute("new_sourceviewname").setValue(receivedViewName); } }
关键说明
- 你之前的误区在于:
formParameters里的键值对不会直接作为参数传入表单的事件函数,而是会被附加到打开表单的URL末尾,所以必须通过查询字符串获取。 - 注意参数名称不要和Dynamics 365系统自带的查询参数重名(比如
type、etc等),如果担心冲突,可以给参数加前缀,比如改成new_viewName。 - 你的按钮代码里
formParameters["viewName"] = currentView后面缺少分号,虽然不影响运行,但建议补上,保持代码规范。
内容的提问来源于stack exchange,提问作者PickyTech
相关产品推荐
相关产品推荐

