查询字符串参数(Query String Parameters)通常被用来传递自定义参数给表单上下文, 使用这些参数来设置某些字段的值, 或者试做一些判断的用处, 下面我就来说下它的用法:
1. 创建Query String Parameters
a. Settings -> Customizations -> Customize the System
b. Entities -> <实体名> -> Forms -> <表单名>
c. 进入Form Properties -> 选择Parameters
你可以传递下面几种类型的值:
-
Boolean
-
DateTime
-
Double
-
EntityType
-
Integer
-
Long
-
PositiveInteger(包括0)
-
SafeString
-
UniqueId
-
UnsignedInt
2. 传递参数值给表单
链接示例:
这个链接的作用是打开指定的Account实体记录, 我们重点说一下最后的这一块&extraqs=parameter_0%3D0
extraqs这个参数是用来传递查询字符串的, 后面接等号, 等号后面到下一个&之前的这部分(如果有)为查询字符串的参数和值, 那我上面例子中的parameter_0%3D0就是URL encode的参数和值, 里面的%3D就是等号(=), 相当于parameter_0=0.
多个参数之间用&分隔, 也就是%26, 例如未编码前为:parameter_0=0¶meter_1=1, 那么编码后就是parameter_0%3D0%26parameter_1%3D1
Note: 其实还可以这种传递参数的方式来设置字段值, 具体可以参考这个链接:
3. 读取查询字符串
第一种方法:
1. 首先我们需要在页面进行一些设置, 进入Form中的Form Properties, 选择或者创建一个事件
进入这个事件后, 选中'Pass executiuon context as first parameter', 这样就可以把上下文信息通过参数传给这个Test函数
然后我们就可以在代码中使用了
Test: function (executionContext) {
var objFormContext = executionContext.getFormContext();
var para0 = objFormContext.data.attributes.get("parameter_0").getValue();
}
第二种方法:
Test: function () {
var params = Xrm.Utility.getGlobalContext().getQueryStringParameters();
var para0 = params["parameter_0"];
}
Note:
1. 第二种方法不需要像第一种方法那样传递上下文给Test函数, 而且在我测试的过程中,我发现我连第一步创建Query String Parameters都不需要,只要在第二步中将参数添加到链接中,然后当有人点击这些链接后来触发事件函数,比如Onload,就可以直接使用Xrm.Utility.getGlobalContext().getQueryStringParameters();来获取所有的参数了
2. 重点来了,就是这种方法在新版的Dynamics CRM已经被废弃了, 所以尽量使用第一种方法来读取查询字符串参数的值, 虽然麻烦点...
Important changes (deprecations) coming in Power Apps and Power Automate - Power Platform | Microsoft DocsImportant changes (deprecations) coming in Power Apps and Power Automatehttps://docs.microsoft.com/en-us/power-platform/important-changes-coming#some-client-apis-are-deprecated3. 我在测试的时候使用的是Dynamics CRM OP v9.0, 第二种方法还是可以正常使用的, 如果你使用的是9.1,或者online版本,估计第二种方法就不行了.
参考链接:
Configure a form to accept custom querystring parameters (Developer Guide for Dynamics 365 Customer Engagement) | Microsoft Docshttps://docs.microsoft.com/en-us/dynamics365/customerengagement/on-premises/developer/configure-form-accept-custom-querystring-parameters?view=op-9-1Manage form properties in Dynamics 365 Customer Engagement (on-premises) | Microsoft Docshttps://docs.microsoft.com/en-us/dynamics365/customerengagement/on-premises/customize/form-properties-legacy?view=op-9-1Open forms, views, dialogs, and reports with a URL (Developer Guide for Dynamics 365 Customer Engagement (on-premises)) | Microsoft Docshttps://docs.microsoft.com/zh-cn/dynamics365/customerengagement/on-premises/developer/open-forms-views-dialogs-reports-url?view=op-9-1