动态crm 4.0查找字段onload()查询

时间:2012-11-15 21:06:36

标签: javascript dynamics-crm dynamics-crm-4

我有一个包含查询字段schoolLookupId的帐户实体,该字段引用自定义实体new_schools。查阅字段仅显示学校的名称。我希望能够使用帐户表单的onload()事件处理程序执行的操作是运行一些javascript代码,该代码将查询new_phonenumber实体的new_schools属性以查看是否存在匹配我提供的值,让我们说var x = "1234",如果匹配,则相应地使用与找到的电话号码对应的学校名称更新schoolLookupId。即使用已存在的电话号码更新查找字段,不用创建全新的查找值。

我可以使用

获取lookupfield的属性
var name = crmForm.all.schoolLookupid.DataValue[0].name
var id = crmForm.all.schoolLookupid.DataValue[0].id
var typename = crmForm.all.schoolLookupid.DataValue[0].typename

但我无法弄清楚如何检索,比较查找字段后面的数据,并相应地更新查找字段。

你的帮助一如既往是非常宝贵的。

1 个答案:

答案 0 :(得分:2)

尝试将此代码放入加载事件:

   var xml = "" +  
    "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +  
    "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" +  
    GenerateAuthenticationHeader() +  
    " <soap:Body>" +  
    " <RetrieveMultiple xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" +  
    " <query xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:QueryExpression\">" +  
    "        <q1:EntityName>new_schools</q1:EntityName>" + 
    "        <q1:ColumnSet xsi:type=\"q1:ColumnSet\">" + 
    "          <q1:Attributes>" + 
    "            <q1:Attribute>new_schoolsid</q1:Attribute>" + 
    "          </q1:Attributes>" + 
    "        </q1:ColumnSet>" + 
    "        <q1:Distinct>false</q1:Distinct>" + 
    "        <q1:Criteria>" + 
    "          <q1:FilterOperator>And</q1:FilterOperator>" + 
    "          <q1:Conditions>" + 
    "            <q1:Condition>" + 
    "              <q1:AttributeName>new_phonenumber</q1:AttributeName>" + 
    "              <q1:Operator>Equal</q1:Operator>" + 
    "              <q1:Values>" + 
    "                <q1:Value xsi:type=\"xsd:string\">"+crmForm.all.new_phonenumber.DataValue+"</q1:Value>" + 
    "              </q1:Values>" + 
    "            </q1:Condition>" +
    "          </q1:Conditions>" + 
    "        </q1:Criteria>" + 
    " </query>" +  
    " </RetrieveMultiple>" +  
    " </soap:Body>" +  
    "</soap:Envelope>" +  
    "";  

    var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
    xmlHttpRequest.Open("POST", "http://"+window.location.hostname+":"+window.location.port+"/mscrmservices/2007/crmservice.asmx", false);
    xmlHttpRequest.setRequestHeader("SOAPAction"," http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple");  
    xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");  
    xmlHttpRequest.setRequestHeader("Content-Length", xml.length);  
    xmlHttpRequest.send(xml);  

    var resultXml = xmlHttpRequest.responseXML;

    if (_resultXml.xml.search('<q1:new_schoolsid')>0)
    {
        var val = xmlDoc.getElementsByTagName("q1:new_schoolsid")[0].childNodes[0].nodeValue;

        var lookupitem = new Array(); 
        lookupitem[0] = new LookupControlItem(val , typecode, name); 
        crmForm.all.schoolLookupid.DataValue = lookupitem ; 
    }
}

我不小心试试这段代码。使用此代码作为指南。

希望这会有所帮助。 如果我回答了您的问题,请将回复标记为答案,并投票表示有帮助。