2

schoolLookupIdカスタムエンティティを参照するルックアップフィールドを持つアカウントエンティティがありますnew_schools。ルックアップフィールドには、学校の名前のみが表示されます。アカウントフォームのイベントハンドラーを使用して実行できるようにしたいのは、エンティティの属性をクエリして、指定した値と一致するかどうかを確認し、それに応じて更新するonload()javascriptコードを実行することです。見つかった電話番号に対応する学校の名前。つまり、完全に新しいルックアップ値を作成せずに、既存の電話番号でルックアップフィールドを更新します。new_phonenumbernew_schoolsvar x = "1234"schoolLookupId

を使用してルックアップフィールドの属性を取得できます

var name = crmForm.all.schoolLookupid.DataValue[0].name
var id = crmForm.all.schoolLookupid.DataValue[0].id
var typename = crmForm.all.schoolLookupid.DataValue[0].typename

しかし、ルックアップフィールドの背後にあるデータを取得して比較し、それに応じてルックアップフィールドを更新する方法がわかりません。

いつものようにあなたの助けはかけがえのないものです。

4

1 に答える 1

2

このコードをloadイベントに入れてみてください:

   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 ; 
    }
}

このコードは注意してはいけません。このコードをガイドとして使用してください。

お役に立てれば。私があなたの質問に答えた場合は、その回答を回答としてマークし、また役立つものとして投票してください。

于 2012-11-16T10:11:01.013 に答える