[gelöst]getEventArgs undefiniert oder null?

11. Juli 2016 10:16

Ich sehe den Wald vor lauter Bäumen nicht mehr. Es gibt eine neue kleine Anforderung, dass das Speichern bitte unterbunden werden soll, wenn in bestimmten Feldern mehr als zwei Ziffern vorkommen (damit dort nicht u.a. Telefonnummern oder Adressen geschrieben werden).
Da ich noch ein Skript zur Formüberprüfung der Telefonnummern meines Vorgängers liegen habe, sollten die Anpassungen ja nur halb so wild sein. Habe ich gedacht. Zum Vergleich: Als erstes der Code zum Telefonnummernformat (das funktioniert), danach mein angepasster Code (wirft den Fehler "Die Eigenschaft getEventArgs eines undefinierten oder Nullverweises kann nicht abgerufen werden").

Code:
function TelFormatCheck(executionObj) {

/*===========================THEMA: TELEFONNUMMERN-Format-Check==========================*/

TelefonnummerCheck("telephone1",executionObj);
TelefonnummerCheck("telephone2",executionObj);
TelefonnummerCheck("telephone3",executionObj);
TelefonnummerCheck("fax",executionObj);
}
/*------------------------------------------------------------------------------------------------------------*/
function TelefonnummerCheck(Feld,executionObj)
{
var tel = Xrm.Page.data.entity.attributes.get(Feld);

switch (Feld) {
    case "telephone1": var AnzText="Telefon 1";
                             break;
    case "telephone2": var AnzText="Telefon 2";
                              break;
    //case "telephone3": var AnzText="Telefon 3";
                              //break;
    case "fax": var AnzText="Fax";
                              break;
                    }         

/* Regular expression*/
var regEx=/^\+[0-9]{1,4} \([0-9]{1,9}\) [0-9]{1,9}\-?[0-9]{1,9}$/;
var tel_inhalt = tel.getValue();         
if (tel_inhalt != null)
           {
           if (tel_inhalt.search(regEx) == -1)
                                        {
                              
                                       alert(AnzText+":ungültiges Format\n------------------------------\ngültige Formate:\n+49 (385) 123456789 oder\n+49 (385) 123456789-123456789\n-------------------------\nSpeichern nicht möglich!");
                                       /*executionObj ist nur ungleich null, wenn onsave ausgeführt wurde.
                              wenn onchange ausgeführt wird, darf exec.. nicht ausgeführt werden. */
                              if (executionObj.getEventArgs() != null)
                                 {
                                 // Datensatz wird nicht gespeichert; onsave wird abgebrochen
                                 executionObj.getEventArgs().preventDefault();
                                 //event.returnValue=false;
                                 //return false;
                                 //Xrm.Page.getControl(Feld).setFocus();
                                 }
                               }                                       
            else {
                   //alert(Feld+":OK");
                   }
           }
}


Code:
function NamenFormatCheck(executionObj) {

NamenCheck("rz_bezeichnung",executionObj);
NamenCheck("name",executionObj);
NamenCheck("rz_name2",executionObj);
NamenCheck("rz_name3",executionObj);
NamenCheck("rz_name4",executionObj);
}
/*------------------------------------------------------------------------------------------------------------*/
function NamenCheck(Feld,executionObj)
{
var namen = Xrm.Page.data.entity.attributes.get(Feld);
switch (Feld) {
    case "rz_bezeichnung": var AnzText="Bezeichnung";
                             break;
    case "name": var AnzText="Firmenname";
                              break;
    case "rz_name2": var AnzText="Name2";
                              break;
    case "rz_name3": var AnzText="name3";
                              break;
   case "rz_name4": var AnzText="name4";
                              break;
                    }

/* Regular expression*/
var regEx=/^[0-9]{3,}$/;
var namen_text = namen.getValue();
if (namen_text != null)
   {
      if (namen_text.search(regEx) == -1)
        {
         alert(AnzText+":ungültiges Format\n------------------------------\nMehr als zwei Ziffern sind hier nicht erlaubt\n-------------------------\nSpeichern nicht möglich!");
         if (executionObj.getEventArgs() != null)
            {
            // Datensatz wird nicht gespeichert; onsave wird abgebrochen
            executionObj.getEventArgs().preventDefault();
            //event.returnValue=false;
            //return false;
            //Xrm.Page.getControl(Feld).setFocus();
            }
      }
      else{
      //Irgendwas zum Abfange
      }
   }                                       
}


Geladen werden jeweils die FormatCheck-Funktionen beim OnSave-Event des Forms.
Wo übersehe ich etwas? Das Vorgehen ist doch identisch, nur dass ich andere Felder zum Vergleich mit der RegEx verwende, oder nicht?
Zuletzt geändert von airliner am 12. Juli 2016 13:17, insgesamt 1-mal geändert.

Re: getEventArgs undefiniert oder null?

12. Juli 2016 08:12

Hallo,

haben die Felder alle den gleichen Datentyp oder sind diese unterschiedlich?

Re: getEventArgs undefiniert oder null?

12. Juli 2016 09:17

Die sind alle gleich: Einzelne Textzeile.

Re: getEventArgs undefiniert oder null?

12. Juli 2016 10:36

Hast du den Haken für den executioncontext gesetzt?
execontext.png
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: getEventArgs undefiniert oder null?

12. Juli 2016 13:17

:oops: :roll: Wir brauchen noch einen Smiley, der sich mit überhöhter Geschwindigkeit an die Stirn fasst.
Das war der Fehler, danke Roxxinger! Jetzt muss ich nur noch die RegEx richtig hinbiegen, dass die auch nur dann anschlägt, wenn sie es soll.