[gelöst] Javascript Abschnitt ausblenden

13. Dezember 2012 11:26

Hallo zusammen,

ich würder gerne im neuen CRM in meinen Formularen einen bestimmten Abschnitt ausblenden. Also keinen Tab sondern einen Abschnitt. Wie mache ich das?

Viele Grüße
Nicole
Zuletzt geändert von Nicole Schmitz am 8. Januar 2013 11:26, insgesamt 1-mal geändert.

Re: Javascript Abschnitt ausblenden

13. Dezember 2012 12:30

siehe
http://michaelsulz.wordpress.com/2012/02/02/crm-2011-hilfreiche-javascript-codeschnippsel-version-3/

Re: Javascript Abschnitt ausblenden

13. Dezember 2012 12:49

Hallo Michael,

deien Blog habe ich natürlich schon durchforstet :-D und auch diese Codeschnipsel gefunden. Leider hilft mir das nicht. Ich will ja kein Tab ausblenden, also diese die ander linken Seite als Baum angezeigt werden, sondern die Abschnitte innerhalb eines solchen Tabs. Beispiel: auf dem Allgemeinen Tab habe ich zig Felder die aber in verschiedene Abschnitte wie Kontaktdaten, Beschreibung, Vertriebsinformationen unterteilt sind. Und eben den Abschnitt Vertriebsinformationen würde ich gerne ausblenden.

Mit Hilfe des SDK bin ich glaube ich schon fast am Ziel, aber eben leider nur fast, denn mit getVisible() kann ich zwar prima sehen, dass der Abschnitt angezeigt wird, liefert true zurück, aber wenn ich dann setVisible(false) setzen will dann kommt ne Meldung
Die Eigenschaft "setVisible" eines undefinierten oder Nullverweises kann nicht abgerufen werden.
aber wie gesagt das getVisible davor funktioniert, deswegen verstehe ich nicht ganz was ich da falsch mache. Hier mein Code:
Code:
var firstTabSections = Xrm.Page.ui.tabs.get(0).sections.get();
   for (var i in firstTabSections) {
      var sectionLabel = firstTabSections[i].getLabel();
      if (sectionLabel == "Vertriebsinformationen") {
         Xrm.Page.ui.tabs.get(0).sections.get(i).getVisible();
         Xrm.Page.ui.tabs.get(0).sections.get(i).setVisible(false);
      }
   }

Re: Javascript Abschnitt ausblenden

13. Dezember 2012 13:27

Hallo Michael,

kleiner Nachtrag zu meinem Script, wenn ich statt dem i eine 7 eintrage also
Xrm.Page.ui.tabs.get(0).sections.get(7).setVisible(false);
dann funktioniert das Ganze. Problem ist nur das ich ja gerade nicht fest eine Zahl hinterlegen wollte, weil es ja mal sein kann das ein neuer Abschnitt hinzukommt und dann passt es wieder nicht mehr und das falsche wird ausgeblendet. Wieso kann das Script denn an der Stelle das i nicht umsetzen? Bei getVisible im übrigen auch nicht habe ich extra nochmal ausprobiert. :-(

Viele Grüße
Nicole

Re: Javascript Abschnitt ausblenden

13. Dezember 2012 13:31

Hallo Nicole,

das i in geschweiften Klammern (i) kann nicht umgesetzt werden, weil es sich nicht um ein Array handelt.

Aber warum machst du das so kompliziert, verwende doch direkt den Namen, steht auch so in meinen Blog-Artikel :-)

Code:
Xrm.Page.ui.tabs.get('Vertriebsinformationen').setVisible(false);

Re: Javascript Abschnitt ausblenden

13. Dezember 2012 14:29

Hallo Michael,

würde ich ja gerne, aber der Aufruf geht bei mir leider nicht. Keine Ahnung was ich da falsch mache. Dachte halt es liegt daran, dass Vertriebsinformationen ein Abschnitt und kein Tab ist, und Abschnitte findet man ja nur über Section. Aber selbst wenn ich einen Namen der Tabs nehme, zum Beispiel Allgemein bekomme ich trotzdem einen Fehler, weil er unter dem Namen nichts findet. Wenn ich den Abschnitt und die Tabs in den Eigenschaften anschaue steht da aber auch nur in Bezeichnung Vertriebsinformationen bzw. Allgemein. Im Feld Name steht dann eine GUID. Hängt das vielleicht damit zusammen?
Und mit den geschweiften Klammern das geht gar nicht. Da wird dann das OnLoad gar nicht mehr ausgeführt. :-(

Viele Grüße
Nicole

Re: Javascript Abschnitt ausblenden

13. Dezember 2012 14:40

Hallo zusammen,

also so funktioniert mein Script jetzt. i musste als noch nach int geparst werden.

Code:
var firstTabSections = Xrm.Page.ui.tabs.get(0).sections.get();
   for (var i in firstTabSections) {
      var sectionLabel = firstTabSections[i].getLabel();
      if (sectionLabel == "Vertriebsinformationen") {
         Xrm.Page.ui.tabs.get(0).sections.get(parseInt(i)).setVisible(false);
      }
   }


Aber warum der Befehl von dir Michael Xrm.Page.ui.tabs.get('Allgemein').setVisible(false); bei mir nicht geht bleibt ein Rätsel. Wie gesagt Xrm.Page.ui.tabs.get('Vertriebsinformationen').setVisible(false); kann denke ich nicht funktionieren, da Vertriebsinformation ein Abschnitt ist und kein ehemaliges Register. Vielleicht verwende ich da auch die falschen Begrifflichkeiten? Aber Allgemein ist ja nunmal definitiv ein Tab das in jedem Form vorkommt das müsste doch also funktionieren, tuts aber leider nicht. Muss immer über den Zahlenwert gehen, also beispielsweise Xrm.Page.ui.tabs.get(0).setVisible(false); dann gehts aber eben auch nur dann. Und sobald sich die Reihenfolge ändert habe ich natürlich ein Problem. :-(

Viele Grüße
Nicole