Dynamics crm js实现级联查询处理(正向级联和反向级联)

function serviceCatalogOnChange(attrCode) {
    var new_2nd_id, new_1st_id, new_capability_id, new_type_id;

    var new_2nd = Xrm.Page.getAttribute("new_service_catalog_2nd").getValue();
    var new_1st = Xrm.Page.getAttribute("new_service_catalog_1st").getValue();
    var new_capability = Xrm.Page.getAttribute("new_industry_and_service_capability").getValue();
    var new_type = Xrm.Page.getAttribute("new_service_type").getValue();

    if (new_2nd != null && new_2nd != undefined && new_2nd != "") {
        new_2nd_id = new_2nd[0].id.toString().replace('{', '').replace('}', '');
    }

    if (new_1st != null && new_1st != undefined && new_1st != "") {
        new_1st_id = new_1st[0].id.toString().replace('{', '').replace('}', '');
    }

    if (new_capability != null && new_capability != undefined && new_capability != "") {
        new_capability_id = new_capability[0].id.toString().replace('{', '').replace('}', '');
    }

    if (new_type != null && new_type != undefined && new_type != "") {
        new_type_id = new_type[0].id.toString().replace('{', '').replace('}', '');
    }

    switch (attrCode) {
        case 0: //服务类别
            if (new_type_id == null || new_type_id == undefined || new_type_id == "") {
                Xrm.Page.getAttribute("new_industry_and_service_capability").setValue(null);
                Xrm.Page.getAttribute("new_service_catalog_1st").setValue(null);
                Xrm.Page.getAttribute("new_service_catalog_2nd").setValue(null);
                return;
            }

            if (new_capability_id != null && new_capability_id != undefined && new_capability_id != "") {
                var Entity = "new_industry_and_service_capability";
                var Id = new_capability_id;
                var Select = "?$select=_new_service_type_value";

                //查询行业/能力的记录
                Xrm.WebApi.retrieveRecord(Entity, Id, Select).then(
                    function success(result) {
                        if (new_type_id.toLowerCase() !== result["_new_service_type_value"]) {
                            Xrm.Page.getAttribute("new_industry_and_service_capability").setValue(null);
                            Xrm.Page.getAttribute("new_service_catalog_1st").setValue(null);
                            Xrm.Page.getAttribute("new_service_catalog_2nd").setValue(null);
                        }
                        else {
                            if (new_1st_id != null && new_1st_id != undefined && new_1st_id != "") {
                                var Entity = "new_service_catalog_1st";
                                var Id = new_1st_id;
                                var Select = "?$select=_new_industry_and_service_capability_value";

                                //查找一级服务目录的记录
                                Xrm.WebApi.retrieveRecord(Entity, Id, Select).then(
                                    function success(result) {
                                        if (new_capability_id.toLowerCase() !== result["_new_industry_and_service_capability_value"]) {
                                            Xrm.Page.getAttribute("new_service_catalog_1st").setValue(null);
                                            Xrm.Page.getAttribute("new_service_catalog_2nd").setValue(null);
                                        }
                                        else if (new_2nd_id != null && new_2nd_id != undefined && new_2nd_id != "") {
                                            var Entity = "new_service_catalog_2nd";
                                            var Id = new_2nd_id;
                                            var Select = "?$select=_new_service_catalog_1st_value";

                                            //查找二级服务目录的记录
                                            Xrm.WebApi.retrieveRecord(Entity, Id, Select).then(
                                                function success(result) {
                                                    if (new_1st_id.toLowerCase() !== result["_new_service_catalog_1st_value"]) {
                                                        Xrm.Page.getAttribute("new_service_catalog_2nd").setValue(null);
                                                    }
                                                },
                                                function (error) {
                                                    console.log(error.message);
                                                }
                                            );
                                        }
                                    },
                                    function (error) {
                                        console.log(error.message);
                                    }
                                );
                            }
                            else {
                                Xrm.Page.getAttribute("new_service_catalog_2nd").setValue(null);
                            }
                        }
                    },
                    function (error) {
                        console.log(error.message);
                    }
                );
            }
            else {
                Xrm.Page.getAttribute("new_industry_and_service_capability").setValue(null);
                Xrm.Page.getAttribute("new_service_catalog_1st").setValue(null);
                Xrm.Page.getAttribute("new_service_catalog_2nd").setValue(null);
            }
            break;
        case 1: //行业/能力
            if (new_capability_id != null && new_capability_id != undefined && new_capability_id != "") {
                var Entity = "new_industry_and_service_capability";
                var Id = new_capability_id;
                var Select = "?$select=_new_service_type_value";

                //查询行业/能力的记录
                Xrm.WebApi.retrieveRecord(Entity, Id, Select).then(
                    function success(result) {
                        setRelatedAttribute(result, "new_service_type", new_type_id);
                    },
                    function (error) {
                        console.log(error.message);
                    }
                );

                if (new_1st_id != null && new_1st_id != undefined && new_1st_id != "") {
                    var Entity = "new_service_catalog_1st";
                    var Id = new_1st_id;
                    var Select = "?$select=_new_industry_and_service_capability_value";

                    //查找一级服务目录的记录
                    Xrm.WebApi.retrieveRecord(Entity, Id, Select).then(
                        function success(result) {
                            if (new_capability_id.toLowerCase() !== result["_new_industry_and_service_capability_value"]) {
                                Xrm.Page.getAttribute("new_service_catalog_1st").setValue(null);
                                Xrm.Page.getAttribute("new_service_catalog_2nd").setValue(null);
                            }
                            else if (new_2nd_id != null && new_2nd_id != undefined && new_2nd_id != "") {
                                var Entity = "new_service_catalog_2nd";
                                var Id = new_2nd_id;
                                var Select = "?$select=_new_service_catalog_1st_value";

                                //查找二级服务目录的记录
                                Xrm.WebApi.retrieveRecord(Entity, Id, Select).then(
                                    function success(result) {
                                        if (new_1st_id.toLowerCase() !== result["_new_service_catalog_1st_value"]) {
                                            Xrm.Page.getAttribute("new_service_catalog_2nd").setValue(null);
                                        }
                                    },
                                    function (error) {
                                        console.log(error.message);
                                    }
                                );
                            }
                        },
                        function (error) {
                            console.log(error.message);
                        }
                    );
                }
                else {
                    Xrm.Page.getAttribute("new_service_catalog_2nd").setValue(null);
                }
            }
            else {
                Xrm.Page.getAttribute("new_service_catalog_1st").setValue(null);
                Xrm.Page.getAttribute("new_service_catalog_2nd").setValue(null);
            }

            break;
        case 2: //一级服务目录
            if (new_1st_id != null && new_1st_id != undefined && new_1st_id != "") {
                var Entity = "new_service_catalog_1st";
                var Id = new_1st_id;
                var Select = "?$select=_new_industry_and_service_capability_value,_new_service_type_value";

                //查找一级服务目录的记录
                Xrm.WebApi.retrieveRecord(Entity, Id, Select).then(
                    function success(result) {
                        setRelatedAttribute(result, "new_industry_and_service_capability", new_capability_id);
                        setRelatedAttribute(result, "new_service_type", new_type_id);
                    },
                    function (error) {
                        console.log(error.message);
                    }
                );

                if (new_2nd_id != null && new_2nd_id != undefined && new_2nd_id != "") {
                    var Entity = "new_service_catalog_2nd";
                    var Id = new_2nd_id;
                    var Select = "?$select=_new_service_catalog_1st_value";

                    //查找二级服务目录的记录
                    Xrm.WebApi.retrieveRecord(Entity, Id, Select).then(
                        function success(result) {
                            if (new_1st_id.toLowerCase() !== result["_new_service_catalog_1st_value"]) {
                                Xrm.Page.getAttribute("new_service_catalog_2nd").setValue(null);
                            }
                        },
                        function (error) {
                            console.log(error.message);
                        }
                    );
                }
            }
            else {
                Xrm.Page.getAttribute("new_service_catalog_2nd").setValue(null);
            }

            break;
        case 3: //二级服务目录
            if (new_2nd_id != null && new_2nd_id != undefined && new_2nd_id != "") {
                var Entity = "new_service_catalog_2nd";
                var Id = new_2nd_id;
                var Select = "?$select=_new_service_catalog_1st_value,_new_industry_and_service_capability_value,_new_service_type_value";

                //查找二级服务目录的记录
                Xrm.WebApi.retrieveRecord(Entity, Id, Select).then(
                    function success(result) {
                        setRelatedAttribute(result, "new_service_catalog_1st", new_1st_id);
                        setRelatedAttribute(result, "new_industry_and_service_capability", new_capability_id);
                        setRelatedAttribute(result, "new_service_type", new_type_id);
                    },
                    function (error) {
                        console.log(error.message);
                    }
                );
            }
    }
}

function setRelatedAttribute(result, attributeName, currentId) {
    if (currentId != undefined && currentId != null && currentId != "" &&         currentId.toLowerCase() === result["_" + attributeName + "_value"]) {
        return;
    }

    var arr = new Array();
    arr[0] = new Object();
    arr[0].id = result["_" + attributeName + "_value"];
    arr[0].name = result["_" + attributeName + "_value@OData.Community.Display.V1.FormattedValue"];
    arr[0].entityType = result["_" + attributeName + "_value@Microsoft.Dynamics.CRM.lookuplogicalname"];
    Xrm.Page.getAttribute(attributeName).setValue(arr);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值