Xrm.Navigation.openForm不尊重formid

时间:2018-03-19 09:15:25

标签: javascript dynamics-crm dynamics-crm-online dynamics-crm-365

我正在尝试按照here找到的示例来解释如何使用Xrm.Navigation.openForm方法为新实体打开CRM表单。

我的目标实体有多个表单,我正在尝试在entityFormOptions对象中指定表单ID,如上面的链接所述。我在这里复制了相关的文字(相关的行以粗体显示):

  

entityFormOptions

     

用于打开表单的实体表单选项。该   object包含以下属性:

     
      
  • cmdbar :(可选)布尔值。指示是否显示命令栏。如果未指定此参数,则默认显示命令栏。
  •   
  • createFromEntity :(可选)查找。指定一个记录,该记录将根据映射的属性值提供默认值。查找对象具有以下String属性:entityType,id和name(可选)。
  •   
  • entityId :(可选)字符串。要显示表单的实体记录的ID。
  •   
  • entityName :(可选)字符串。显示表单的实体的逻辑名称。
  •   
  • formId :(可选)字符串。要显示的表单实例的ID
  •   
  • height :(可选)数字。要以像素显示的窗体窗口的高度。
  •   
  • navBar :(可选)字符串。控制是否显示导航栏以及是否可以使用应用程序导航   站点地图中定义的区域和子区域。有效值为:“on”,   “off”或“entity”。
  •   

然而,这对我来说似乎不起作用。 我的表单ID是375DE297-C0AF-4711-A811-5F1663FAE5DA

这是我的代码:

var entityFormOptions = {};
entityFormOptions["entityName"] = "contact";
entityFormOptions["formId"] = "375DE297-C0AF-4711-A811-5F1663FAE5DA";
Xrm.Navigation.openForm(entityFormOptions);

新实体表格打开;但是它使用的是默认格式,而不是指定的格式。

我作为系统管理员运行,并且我已确认我可以访问指定实体的所有表单,因此我认为这不是表单安全问题。

有没有人尝试过这种在Dynamics 365中打开表单的方法?

3 个答案:

答案 0 :(得分:1)

这似乎是文档中的错误或Dynamics中的错误。

之前的实现(v8及之前版本)在参数对象中使用 formid https://msdn.microsoft.com/en-us/library/jj602956.aspx#openEntityForm

尽管当前的文档声明必须在entityFormOptions中设置formId,但它实际上并未受到尊重。但是当你把它放到好的旧形式参数时,它会很荣幸。

这就是诀窍:

var entityFormOptions = {};
entityFormOptions["entityName"] = "contact";
var formParameters = {};
formParameters ["formid"] = "375DE297-C0AF-4711-A811-5F1663FAE5DA";
Xrm.Navigation.openForm(entityFormOptions, formParameters);

P.S。请注意小写“formid”

答案 1 :(得分:1)

我们还可以使用以下代码打开特定的实体表单:

var entityFormOptions = {};
entityFormOptions["entityName"] = "nrw_contact";//Logical name of the entity
entityFormOptions["entityId"] = "nrw_contact_ID"; //ID of the entity record
entityFormOptions["formId"] = "CF8D885B-256D-43E6-8776-CBBB7AA88EF5"; //FormId
Xrm.Navigation.openForm(entityFormOptions);

请参考此链接以获取更多详细信息:https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/clientapi/reference/xrm-navigation/openform

答案 2 :(得分:1)

这可能有点晚了,但希望能帮助其他人。

文档是正确的。您可以提供如图所示的 formId。您只需要确保在 App Designer 中将表单添加到 Model Driven App 中(您可以通过在右侧面板上检查来添加表单)Screenshot of App Designer where you need to add the form

var pageInput = {
    pageType: "entityrecord",
    entityName:"icon_case",
    entityId: recordId,
    formId: v_formId
    };