2012-11-15 197 views
2

我有一個賬戶實體,其查詢字段爲schoolLookupId,它返回自定義實體new_schools。查找字段僅顯示學校的名稱。我希望能夠使用的帳戶形式的onload()事件處理程序運行一些JavaScript代碼,將查詢new_schools實體的new_phonenumber屬性,看它是否符合我提供一個值,可以說var x = "1234"做,如果它不然後相應地更新schoolLookupId,並找到與找到的電話號碼相對應的學校名稱。即用已存在的電話號碼更新查找字段而不是創建全新的查找值。dynamics crm 4.0查找字段onload()查詢

我可以用

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

得到lookupfield的屬性,但我無法弄清楚如何檢索,比較的是位於查找字段背後的數據,並據此更新lookupfield。

您一如既往的幫助是無價的。

回答

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

我沒有嘗試這個代碼要小心。使用此代碼作爲指導。

希望這會有所幫助。 如果我回答了您的問題,請將回復標記爲答案,並投票表示爲有幫助。

+0

:首先感謝您的幫助。我試過你的代碼,但它不起作用。沒有JavaScript錯誤,所以我評論它,所以我在if語句中加入了一個警告,看看我是否實際上擊中了它,果然我沒有。其他任何建議? –