OnAfterLoad Event

22. Juni 2010 11:46

Hallo Zusammen,

gibt es ein Event wie OnAfterLoad?

ich habe 2 Lookupfelder. In einem steht der Kontakt, im Anderen die Firma.
Das Feld Firma wurde nachträglich eingefügt und deshalb möchte ich im OnLoad (eigentlich ja danach) den Wert für Firma setzen.

Folgendes Script:

Code:
function setCustomer() {

    var companyid = null;
    var companyname = null;
    var doc = null;
    var customerInfo = null;
    if (crmForm.all.customerid.DataValue != null) {
        if (crmForm.all.customerid.DataValue[0].typename == "contact") {
           
            customerInfo = GetCustomerInformation(crmForm.all.customerid);
            companyid = customerInfo.nodeTypedValue;
           
            var i = 0;

            while (customerInfo.attributes[i].name != "name") {
                i++;
            }
            companyname = customerInfo.attributes[i].nodeTypedValue;
            var lookupitem = new Array();
            var lookupitemobject = new Object();
            lookupitemobject.id = companyid;
            lookupitemobject.typename = 'account';
            lookupitemobject.name = companyname;
            lookupitem[0] = lookupitemobject;
            crmForm.all.new_companyid.DataValue = lookupitem;
        }
        else {
            companyid = crmForm.all.customerid.DataValue[0].id;
            crmForm.all.new_companyid.DataValue = crmForm.all.customerid.DataValue
        }
    }
    else {
        crmForm.all.new_companyid.DataValue = null;
    }
   
}


hier die GetCustomerInformation Funktion

Code:
GetCustomerInformation = function(contactid)
{

    var xml = null;
    var xmlHttpRequest = null;
    var resultXml = null;
    var doc = null;
    var companyid=null;
 
    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>" +
    "    <Retrieve xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" +
    "      <entityName>contact</entityName>" +
    "       <id>" + contactid.DataValue[0].id  + "</id>" +
    " <columnSet xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:ColumnSet\">" +
    " <q1:Attributes>" +
    " <q1:Attribute>parentcustomerid</q1:Attribute>"+
    " </q1:Attributes>"+
    "</columnSet>"+
    "    </Retrieve>" +
    "  </soap:Body>" +
    "</soap:Envelope>";
    xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
    xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
    xmlHttpRequest.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Retrieve");
    xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
    xmlHttpRequest.send(xml);
    resultXml = xmlHttpRequest.responseXML.xml;
    doc = new ActiveXObject("MSXML2.DOMDocument");
    doc.async = false;
    doc.loadXML(resultXml);

    companyid =  doc.selectSingleNode('//q1:parentcustomerid');
    return companyid;
}


rufe ich die Funktion setCustomer() im onLoad auf, dann bekomme ich dort, wo GetCustomerInfo aufgerufen wird die Fehlermeldung "Objekt erwartet". Rufe ich gleiche Funktion im OnChange von Kontakt auf, dann funktioniert das :-(
Warum?

Meine Idee war esjetzt ein OnAfterLoad event einzufügen. Aber gibt es das überhaupt und wenn ja, wie geht das?

Danke
Pascal