When using Xrm.Utitliy object to open entity form or
Quick create form, sometimes we need to pass query string parameters.
In MS CRM you can enable CRM forms to accept query
strings, and you can retrieve those query string parameters in form events.
Set
Query string parameters
a.
Go to Entity customization
b.
Open form, where you want to add query
strings parameters
c.
Click on Form Properties
d.
In form properties window you will see
Parameters tabs.
e.
Add Parameters, which you want to get it,
when using openEntityForm or openQuickCreate
f.
When adding parameter need to specify name
and data type.
NOTE:
In Each parameter name MUST contains at least one underscore (‘_’) character. And
name cannot be started with underscore or “crm_”. Microsoft recommends that you should use
solution publisher prefix when defining parameter name, e.g abc_queryString_contactId
g.
We can pass Boolean, Datetime, double,
entitytype, Integer, long, PositiveInteger, SafeString, UniqueId, UnsignedInt
types of parameters.
Pass
Query String parameters to form using openEntityForm or openQuickCreate
openContactForm: function () {
var parameters = {};
/*Custom
querystring parameter*/
parameters["qryParam_boolean"] = 0; // Boolean
value - 0,1, true, false
var startDate = new Date();
parameters["qryParam_datetime"] = startDate.format("MM/dd/yyyy"); // date time
parameters["qryParam_double"] = 1.0; //double
parameters["qryParam_eType"] = 2; // Entity Type
Code
parameters["qryParam_eType"] = Xrm.Page.context.getQueryStringParameters().etc; // Another way to get Entity Type Code
parameters["qryParam_eType"] = Xrm.Page.context.getQueryStringParameters().etc; // Another way to get Entity Type Code
parameters["qryParam_integer"] = 100; //Integer
parameters["qryParam_long"] = 100000; //
Long
parameters["qryParam_positiveinteger"] = 1; // Positive
Integer including 0
parameters["qryParam_safestring"] = "safestring"; //string
parameters["qryParam_uniqueId"] = Xrm.Page.data.entity.getId(); //GUID
parameters["qryParam_unsignedInt"] = 1; //unsigned
integer
var windowsOptions = {};
windowsOptions["openInNewWindow"] = true;
Xrm.Utility.openEntityForm("new_manufacture",null, parameters,
windowsOptions);
},
Retrieve
Parameters value, when entity form is opened.
To get parameter value, we need to use
Xrm.Page.context.getQueryStringParameters()
getQueryStringParamters: function () {
var booleanParam;
var datetimeParam;
var doubleParam;
var entitytypeParam;
var integerParam;
var longParam;
var positiveintegerParam;
var safestringParam;
var uniqueIdParam;
var unsignedIntParam;
if
(Xrm.Page.context.getQueryStringParameters().qryParam_boolean != null &&
Xrm.Page.context.getQueryStringParameters().qryParam_boolean != 'undefined') {
booleanParam =
Xrm.Page.context.getQueryStringParameters().qryParam_boolean;
}
if
(Xrm.Page.context.getQueryStringParameters().qryParam_datetime != null &&
Xrm.Page.context.getQueryStringParameters().qryParam_datetime != 'undefined') {
datetimeParam =
Xrm.Page.context.getQueryStringParameters().qryParam_datetime;
}
if
(Xrm.Page.context.getQueryStringParameters().qryParam_double != null &&
Xrm.Page.context.getQueryStringParameters().qryParam_double != 'undefined') {
doubleParam =
Xrm.Page.context.getQueryStringParameters().qryParam_double;
}
if
(Xrm.Page.context.getQueryStringParameters().qryParam_eType != null &&
Xrm.Page.context.getQueryStringParameters().qryParam_eType != 'undefined') {
entitytypeParam =
Xrm.Page.context.getQueryStringParameters().qryParam_eType;
}
if
(Xrm.Page.context.getQueryStringParameters().qryParam_integer != null &&
Xrm.Page.context.getQueryStringParameters().qryParam_integer != 'undefined') {
integerParam =
Xrm.Page.context.getQueryStringParameters().qryParam_integer;
}
if
(Xrm.Page.context.getQueryStringParameters().qryParam_long != null &&
Xrm.Page.context.getQueryStringParameters().qryParam_long != 'undefined') {
longParam =
Xrm.Page.context.getQueryStringParameters().qryParam_long;
}
if
(Xrm.Page.context.getQueryStringParameters().qryParam_positiveinteger != null &&
Xrm.Page.context.getQueryStringParameters().qryParam_positiveinteger != 'undefined') {
positiveintegerParam =
Xrm.Page.context.getQueryStringParameters().qryParam_positiveinteger;
}
if
(Xrm.Page.context.getQueryStringParameters().qryParam_safestring != null &&
Xrm.Page.context.getQueryStringParameters().qryParam_safestring != 'undefined') {
safestringParam =
Xrm.Page.context.getQueryStringParameters().qryParam_safestring;
}
if
(Xrm.Page.context.getQueryStringParameters().qryParam_uniqueId != null &&
Xrm.Page.context.getQueryStringParameters().qryParam_uniqueId != 'undefined') {
uniqueIdParam =
Xrm.Page.context.getQueryStringParameters().qryParam_uniqueId;
}
if
(Xrm.Page.context.getQueryStringParameters().qryParam_unsignedInt != null &&
Xrm.Page.context.getQueryStringParameters().qryParam_unsignedInt != 'undefined') {
unsignedIntParam =
Xrm.Page.context.getQueryStringParameters().qryParam_unsignedInt;
}
},
Now you can set value to form or add
any logic based on passed parameters.
Hi.. I want to open an entity without using openentityform also want to pass parameters like above. Is there any other way other than openentityform?
ReplyDeleteThanks so much for this information. I have to let you know I concur on several of the points you make here and others may require some further review, but I can see your viewpoint.
ReplyDeleteONLINE CRM
use formid parameter too if you are using multiple forms otherwise it will keep breaking.
ReplyDeleteThe blog was really helpful, thanks for such quality content
ReplyDeleteprocess of lead generation