none
求助MSCRM2011 窗体 JScript 过滤lookup视图,为什么点击lookup按钮之后,先出现默认的视图,后才出现我自定义的过滤视图? RRS feed

  • 问题

  • MSCRM 2011 求助MSCRM2011 窗体上lookup字段过滤视图,我用 JScript 过滤lookup视图,为什么点击lookup按钮之后,先出现默认的视图,后才出现我自定义的过滤视图。如何在我点击lookup字段之后直接出现我自定义的过滤视图,而不先出现默认的视图?

            麻烦大家帮我看看,谢谢。

            主要代码如下:

            /*

            描述:过滤发货部品代码的view

            三种情况:

            1.部品更换单明细窗体上,

            发货部品代码等于退货部品代码

            2.部品更换单明细窗体上的发货部品代码等于退货部品代码的替换

            部品代码

            具体:a.如果部品更换单明细窗体上的退货部品代码等于部品替换表窗体上的部品代码,

            则部品更换单明细窗体上的发货部品代码等于部品替换表窗体上的替代部品的部品代码。

            b.如果部品更换单明细窗体上的退货部品代码等于部品替换表窗体上的替代部品的部品代码

            ,则部品更换单明细窗体上的发货部品代码等于部品替换表窗体上的部品代码。

            日期:2013年1月31日

            作者:tanhua

            */

            function addCustomShipSysMaterialView() {

                var returnssysmaterialid = Xrm.Page.getAttribute("new_returns_sys_materialid"); //退货部品代码

                var shipsysmaterial = Xrm.Page.getAttribute("new_ship_sys_material"); //发货部品代码

                var serverUrl = Xrm.Page.context.getServerUrl(); //获取路径

                var entityName = "new_sys_material";

                var retrieveResult =

                    retrieveMultipleEntity(serverUrl,

                                    "new_sys_fittings_replace",

                                    "new_fittingsid,new_fittings_replaceid",

                                    "new_fittingsid/Id eq (guid'" + returnssysmaterialid.getValue()[0].id + "') or new_fittings_replaceid/Id eq (guid'" + returnssysmaterialid.getValue()[0].id + "') and statecode/Value eq 0",

                                    "", "", "", "");

                if (retrieveResult == null || retrieveResult.statusText != "OK") {

                    alert("查询失败" + "(" + retrieveResult.response + ")");

                    return;

                }

            

                var new_fittings_arr = "";

                new_fittings_arr = retrieveResult.response.results;

            

                //如果没有查到数据,那么直接把退货部品代码的值赋给发货部品代码

                if (new_fittings_arr.length == 0) {

                    if (returnssysmaterialid != undefined && returnssysmaterialid != "") {

                        var entityReference = getEntityReferenceObject(returnssysmaterialid.getValue()[0].id, entityName, returnssysmaterialid.getValue()[0].Name);

                        shipsysmaterial.setValue(entityReference);

                    }

                }

            

                var viewId = "{00000000-0000-0000-0000-000000000001}";

            

                var viewDisplayName = "filter";

            

                var lookupControl = Xrm.Page.getControl("new_ship_sys_material");

            

                var fetchXml =

            "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='true'>" +

            "  <entity name='new_sys_material'>" +

            "    <attribute name='new_material_code' />" +

            "    <attribute name='new_material_type' />" +

                "    <attribute name='new_material_name' />" +

                "       <attribute name='new_sys_materialid' /> " +

            "    <attribute name='createdon' />" +

            "    <order attribute='new_material_code' descending='false' />" +

                "       <filter type='and'> " +

                "       <condition attribute='statecode' operator='eq' value='0' /> " +

                "       </filter> " +

                "     <link-entity name='new_sys_fittings_replace' from='new_fittingsid' to='new_sys_materialid' alias='aa'> " +

                "     <filter type='and'> " +

                "     <filter type='or'> ";

            

                for (var i = 0; i < new_fittings_arr.length; i++) {

                    fetchXml +=

                    " <condition attribute='new_fittingsid' operator='eq' uiname='" + new_fittings_arr[i].new_fittingsid.Name + "' uitype='new_sys_material' value='" + new_fittings_arr[i].new_fittingsid.Id + "' /> " +

                    "  <condition attribute='new_fittings_replaceid' operator='in'> " +

                    "   <value uiname='" + new_fittings_arr[i].new_fittings_replaceid.Name + "' uitype='new_sys_material'>" + new_fittings_arr[i].new_fittings_replaceid.Id + "</value> " +

                    " </condition>";

                }

            

                fetchXml +=

            "    </filter>" +

                "    </filter>" +

                "      </link-entity> " +

            "  </entity>" +

            "</fetch>";

            

                var layoutXml =

            "<grid name='resultset' " +

            "object='1' " +

            "jump='name' " +

            "select='1' " +

            "icon='1' " +

            "preview='1'>" +

            "<row name='result' " +

            "id='new_sys_materialid'>" +

            "<cell name='new_material_code' " +

            "width='100' />" +

            "<cell name='new_material_name' " +

            "width='100' />" +

            "</row>" +

            "</grid>";

                lookupControl.addCustomView(viewId, entityName, viewDisplayName, fetchXml, layoutXml, false);

                lookupControl.setDefaultView(viewId);

            }

    然后我把addCustomShipSysMaterialView() 方法放在page onload 里面。

    2013年1月31日 15:10

全部回复