Dynamics 365中的快速创建窗体获取父记录信息

我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的微软最有价值专家(Microsoft MVP),欢迎关注我的微信公众号 MSFTDynamics365erLuoYong ,回复400或者20200407可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!

Dynamics 365的快速创建窗体可以在当前页面中新建记录,而不是打开新页面,很多时候该功能比较方便,当然实体需要启用快速创建功能,并且创建至少一个类型为快速创建(Quick Create)的窗体,还有值得注意的就是这个快速创建窗体需要添加到需要使用的App中才行(在App的编辑模式下将该表单加入后发布即可),否则就没有办法使用快速创建功能,会使用普通的创建功能。

Dynamics 365中的快速创建窗体获取父记录信息

 

 有时候快速表单中需要获取父记录的信息,目前我认为是没有办法直接获取到父记录所在窗体的上下文信息来获取字段值的。

但是也有其他办法,比如根据父记录的ID和实体逻辑名称查询下。

如何获取父记录的信息,这里有两种方法。

方法一:将关联到父记录的字段放到快速创建窗体中,一般不需要显示,设置为默认隐藏即可。然后在代码中可以获取到该字段的值,执行查询即可。我这里提供些示例代码:

    onl oad: function (executionContext) {
        var formContext = executionContext.getFormContext();
        if (formContext.ui.getFormType() === 1) {
            var parentid = formContext.getAttribute("lvo_parentid").getValue();
            if (parentid) {
                Xrm.WebApi.retrieveRecord(parentid[0].entityType, parentid[0].id, "?$select=_ly_requesttype_value").then(
                    function success(result) {
                        if (result._ly_requesttype_value.toLowerCase() === "6f45cd2f-8f4e-ea11-a812-000d3a378f47")) {
                            formContext.getControl("ly_customfield").setVisible(true);
                        }
                    },
                    function (error) {
                        Xrm.Navigation.openErrorDialog({ message: "Error:" + error.message });
                    }
                );
            }
        }
    }

 

方法二,通过 getPageContext (Client API reference) 。在快速创建窗体的OnLoad事件执行代码中,通过 Xrm.Utility.getPageContext().input.createFromEntity 获取到是从哪个父记录来创建子记录的,然后执行一次查询即可。官方文档说明如下:

Syntax

Xrm.Utility.getPageContext();

Returns

The method returns an object with the input property. The input property is an object with the following attributes depending on whether you are currently on the entity form or entity list:

Entity form

Name Type Description
pageType String The current page type. The value returned is "entityrecord".
entityName String Logical name of the entity currently displayed.
entityId String ID of the entity record currently displayed in the form.
createFromEntity Lookup The parent record that provides default values based on mapped attribute values. The lookup object has the following String properties: entityTypeid, and name.
formId String ID of the currently displayed form.
上一篇:java递归父子关系菜单


下一篇:c#webapi 前端的一些写法