none
CRM 2013 - Dropdown setzt Wert bei zweitem Klick

    Frage

  • Hallo zusammen,

    einigen Kollegen ist es aufgefallen, dass die verwendeten Dropdown-Menüs meist/fast immer erst beim zweiten Klick den entsprechenden Wert setzen. Heißt, der Nutzer klickt auf das Dropdown, wählt einen Wert, welcher auch farblich hinterlegt wird. Die Liste bleibt in diesem Moment aber geöffnet. Erst mittels Tab-Taste oder Auswählen eines _anderen_ Wertes, schließt sich die Liste. In letzterem Fall dann mit dem Wert, der zuletzt ausgewählt wurde.

    Das Problem tritt sowohl im IE11, als auch im FF41 (und vorherigen Versionen) auf. Kann ich da irgendwas machen? Ich habe es schon mit Platzhaltern oberhalb der Felder versucht. Das brachte jedoch nichts und sah zudem nach nichts aus.

    Gibt es eine Art Logging und/oder Troubelshooting hierfür, die ich noch nicht gefunden habe?

    Freitag, 2. Oktober 2015 09:34

Alle Antworten

  • Hallo,

    dabei handelt es sich um das Standardverhalten des CRM und kann meines Wissens nach auch nicht angepasst werden.


    Viele Grüße

    Michael Sulz
    MVP für Microsoft Dynamics CRM
    Blog
    Website XING LinkedIn Facebook Twitter

    Montag, 5. Oktober 2015 12:26
    Moderator
  • Das ist äußerst ungünstig und ich kann mir kaum vorstellen, dass das wirklich so gewollt ist.

    Die meisten hier sind es gewohnt nur mit der Maus zu navigieren und nicht per Tab-Taste (auch wenn man denen 10 mal sagt, dass es schneller geht). Da ist es natürlich schwierig zu vermitteln, dass mehrfach geklickt werden muss, um einen Eintrag des Dropdowns zu übernehmen. Zumal durch das runterrollende Dropdown gleichzeitig das nachfolgende Feld verdeckt wird...


    Update: Es betrifft nicht alle Dropdowns, sondern (vornehmlich) jene, die mittels Skript geprüft werden. Bsp.: Wenn Dorpdown-Wert1 = X, dann Dropdown-Wert2 nur Y1, Y3, Y4 und Y7 zulässig.
    Dienstag, 6. Oktober 2015 07:22
  • Hallo Florian,

    kann es sein, dass diese Dropdowns gar keine richtigen Listboxen sind? Normalerweise ist das ein <select ...> Tag im HTML Code. Ist das auch bei diesen Dropdowns so?

    Ich bin mehr der Web- und ASP.NET Mensch, daher weiß ich nicht, ob und wie Dynamcs CRM sowas verwendet, falls es sowas wie eine Online Demo gibt, schau ich mir das aus webtechnischer Sicht aber gerne mal an.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Dienstag, 6. Oktober 2015 07:53
  • Hallo Stefan,

    danke für die schnelle Antwort. Ich habe mal einen Screenshot vom betreffenden HTML gemacht. Da es über die einfachen Bordmittel des CRM (die Lösung stammt noch von 2011 und wurde nach 2013 migriert) erstellt wurde, habe ich da nur wenig Möglichkeiten etwas einzustellen.
    Hier der Link zum Bild (solange mein Konto nicht überprüft sei, darf ich keine Bilder und keinen Code in meinen Beiträgen haben; warum auch immer): http://abload.de/img/crm_html_dropdown0ns54.png

    Zusätzlich habe ich noch das Skript rausgesucht, welches auf beide Felder Einfluss hat:

    function BerufsgruppeUpdCheckBranche(executionObj)
    {
    var branche_obj = Xrm.Page.data.entity.attributes.get("industrycode");
    var branche_text = branche_obj.getText();
    var branche = branche_obj.getValue();
    var kundentyp_text = Xrm.Page.getAttribute("rz_kundentyp").getText();
    var kundentyp = Xrm.Page.getAttribute("rz_kundentyp").getValue();
    //alert("branche= "+branche+"\n"+"kundentyp: "+kundentyp);

    if (((branche == "100000000") || (branche == "100000001")) && (kundentyp != "100000001") && (kundentyp != "100000000") && (kundentyp != "100000002") && (kundentyp != "100000003") && (kundentyp != "100000004"))
                    {
                    alert("Berufsgruppe: "+kundentyp_text+" passt nicht zur Branche: "+branche_text+"."+"\n"+"Speichern nicht möglich!");
                    Xrm.Page.getControl("rz_kundentyp").setFocus();
                    /*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;
                        }
                    }

    if (((branche == "100000002") || (branche == "419340001") || (branche == "419340000")) && (
        (kundentyp == "100000001") || (kundentyp == "100000002") || (kundentyp == "100000003")|| (kundentyp == "100000004")))
                    //(kundentyp == "100000000") || am 31.3.2014 Wegner rausgenommen; Apotheke auch beim SRZH möglich
                    {
                    alert("Berufsgruppe: "+kundentyp_text+" passt nicht zur Branche: "+branche_text+"."+"\n"+"Speichern nicht möglich!");
                    Xrm.Page.getControl("rz_kundentyp").setFocus();
                    /*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;
                        }
                    }
    }

    Es gibt noch weitere Skripte; allen gemein ist es, dass sie auf OnChange des jeweiligen Feldes reagieren.

    Dienstag, 6. Oktober 2015 08:40
  • Hallo Florian,

    wie wird denn die Funktion BerufsgruppeUpdCheckBranche aufgerufen und welcher Parameter wird übergeben?


    Viele Grüße

    Michael Sulz
    MVP für Microsoft Dynamics CRM
    Blog
    Website XING LinkedIn Facebook Twitter

    Donnerstag, 8. Oktober 2015 06:21
    Moderator
  • Hallo Michael,

    das Skript wird bei  Formular OnSave, (Feld) Berufsgruppe OnChange und (Feld) Branche OnChange ausgelöst. Die Parameterübergabe habe ich bei allen dreien einmal deaktiviert. Vorher war es aktiviert, aber keine Parameter angegeben.

    Donnerstag, 8. Oktober 2015 10:16
  • Noch jemand eine Idee?
    Mittwoch, 14. Oktober 2015 07:15
  • Push
    Montag, 26. Oktober 2015 08:07
  • Hallo Florian,

    schalte doch einmal das Tracing auf dem Server und dem Client ein. Im Trace sollte eine genauere Fehlermeldung stehen, mit der wir dann weiterarbeiten können.


    Viele Grüße

    Michael Sulz
    MVP für Microsoft Dynamics CRM
    Blog
    Website XING LinkedIn Facebook Twitter

    Montag, 26. Oktober 2015 14:33
    Moderator
  • Hallo Michael,

    auch wenn es jetzt etwas länger gedauert hat, habe ich vermutlich den Übeltäter gefunden. Es gibt Felder (zu denen auch die Dropdowns gehören), die per default schreibgeschützt sind. Nur beim FormType 1 (also Neuanlegen der Firma) und bei manuellem Aufrufen des Skripts, werden die Felder freigegeben. Das Skript sieht so aus:

    function geschuetzteFelder_bearbeiten()
        {//alert("Hier ist die funktion: geschuetzteFelder_bearbeiten()");
         var formType = Xrm.Page.ui.getFormType();
         if (formType == 1)
            {//alert("Formtyp: created.");
             Xrm.Page.getControl("rz_uuid").setDisabled(false);
             Xrm.Page.getControl("rz_nl").setDisabled(false);
             //Xrm.Page.getControl("rz_firmenzuordnung").setDisabled(false);
             Xrm.Page.getControl("industrycode").setDisabled(false);
             Xrm.Page.getControl("rz_kundentyp").setDisabled(false);
             Xrm.Page.getControl("rz_ik").setDisabled(false);
             //set_focus("ownerid");
            }
         //else
            {//alert("Dieser Datensatz existiert bereits.");
             //}
            }
        }

    Wären die Felder nicht per default gesperrt, genügt ein Klick auf ein Dropdown-Element und der Wert wurde entsprechend ausgewählt.

    Wäre der set_focus nicht auskommentiert, hätte ich diesen im Verdacht gehabt. So fehlt mir aber gerade jegliche Erklärung, was das jetzt sein könnte.

    Das Skript kann ich leider auch nicht ohne Weiteres rauswerfen, weil befürchtet wird, dass (un)mündige User, die Schreibrechte haben, "aus Versehen" solche sensiblen Werte ändern könnten.

    Mittwoch, 11. November 2015 07:10
  • Noch jemand eine Idee?
    Mittwoch, 16. Dezember 2015 14:49
  • Hallo Florian,

    was soll man jetzt noch sagen, da du den Übeltäter ja gefunden hast. Das Script sieht zwar sauber aus wird aber wohl nicht das einzige Script auf dem Formular sein.

    Die weitere Fehleranalyse geht sehr ins Detail und wohl auch nur möglich, wenn jemand direkt vor dem System sitzt, per Forum und Ferndiagnose funktioniert das nicht.


    Viele Grüße

    Michael Sulz
    MVP für Microsoft Dynamics CRM
    Blog
    Website XING LinkedIn Facebook Twitter

    Mittwoch, 16. Dezember 2015 15:54
    Moderator