Custom Formulare - JScript Zugriff auf Objektattribute

Antworten
Christoph
Beiträge: 44
Registriert: 30. Mär 2016, 15:47
Kontaktdaten:

Custom Formulare - JScript Zugriff auf Objektattribute

Beitrag von Christoph » 18. Sep 2018, 14:58

Hallo,

ich möchte in einem Formular zu einem durch den Nutzer ausgewählten Objekt, z.B. einen Standort, weitere Daten abrufen und im Formular verfügbar machen. Mir steht im JScript die Variable für das Auswahlfeld zur Verfügung, diese enthält eine Object-ID. Die zusätzlichen Daten müssen dementsprechend zur Laufzeit per Ajax-Abruf geholt werden. Gibt es dazu für Endkunden nutzbare Funktionen?

Danke für Tipps!

Gruß
Christoph

Benutzeravatar
FrankPree
Beiträge: 116
Registriert: 25. Aug 2011, 08:41
Kontaktdaten:

Re: Custom Formulare - JScript Zugriff auf Objektattribute

Beitrag von FrankPree » 08. Nov 2018, 08:53

Hallo Christoph,

in der Classic UI oder in der UUX?

Grüße
Frank
Bitte für meine Ideen im Matrix Ideenportal voten:
Slider Control: https://ideas.matrix42.com/ideas/SB-I-45

Christoph
Beiträge: 44
Registriert: 30. Mär 2016, 15:47
Kontaktdaten:

Re: Custom Formulare - JScript Zugriff auf Objektattribute

Beitrag von Christoph » 15. Nov 2018, 07:26

Hallo,
in der Classic UI.

Gruß
Christoph

Benutzeravatar
FrankPree
Beiträge: 116
Registriert: 25. Aug 2011, 08:41
Kontaktdaten:

Re: Custom Formulare - JScript Zugriff auf Objektattribute

Beitrag von FrankPree » 15. Nov 2018, 16:33

Servus,

leider bietet die Classic UI keine einfachen Methoden an, auf referenzierende Objekte zuzugreifen. Je nachdem wie komplex Deine Anforderung ist, kann Dein gewünschtes Ziel relativ einfach, oder auch sehr schwierig sein.

Ich versuche Dir hier mal möglichst kurz eine Variante darzustellen.

Nehmen wir an, Du hast ein benutzerdefiniertes Konfigurationselement UD_FormularAufrufType. Diesem liegt die Datendefinition UD_FormularAufrufClassBase zugrunde.
Die Datendefinition UD_FormularAufrufClassBase hat eine N:0/1 Beziehung zu den Standorten (SPSLocationClassBase). Die Relationsenden heißen Standort und UD_Formular.

Im Dialogeditor des Konfigurationselementes UD_FormularAufruf fügst Du Dir nun einen Abschnitt hinzu.

Danach zwei Felder, ein benutzerdefiniertes Steuerlement und das Standardfeld Name, das beim Anlegen der Datendefinition automatisch angelegt wurde.

Sieht dann etwa so aus:
CustomForm.png
(10.52 KiB) 98-mal heruntergeladen
Im benutzerdefinierten Steuerlement nutzt Du folgenden Code:

Code: Alles auswählen

<sps:SpsTextBoxLink
                id="Ud_FormularAufrufClassBaseStandort"
                Mandatory="false"
                readonly="false"
                allownavigation="true"
                runat="server"
                spsclass="Ud_FormularAufrufClassBase"
                spsattribute="Standort"
                whereclause=""
                autopostback="true"
                DisplayExpression="T(SPSLocationClassBase).IDName"
                ColumnsLayoutTemplateName="SPSLocationClassBase_Default"
                relateddefaultvaluesmode="OnPrerender">

<sps:DefaultValue
                               displayexpression="T(SPSLocationClassBase).Name"
                               destinationcontrolid="Ud_FormularAufrufClassBaseName"/>

</sps:SpsTextBoxLink>
Damit wird Dir nach Auswahl eines Standortes, das Feld Name aus der Relation SPSLocation in Deinem Attributfeld Name automatisch eingeblendet.
CustomFormCode.png
(120.21 KiB) 86-mal heruntergeladen
Nun kannst Du beliebige Felder hinzufügen und die Felder aus der Relation des Standortes befüllen. Du ergänzt einfach immer wieder um das folgende Konstrukt erweitern.

Code: Alles auswählen

<sps:DefaultValue
                               displayexpression="T(SPSLocationClassBase).IRGENDEINATTRIBUT"
                               destinationcontrolid="Ud_FormularAufrufClassBaseIRGENDEINFELDNAME"/>

Merke dazu aber, wenn nur ein kleiner Fehler in der Syntax des ganzen Konstrukts ist, bleibt die Dialogseite leer. Du findest Debug-Informationen auf dem Anwendungsserver im Matrix Verzeichnis im der Datei Console.log.

Ich hoffe das hilft Dir bei Deinen Versuchen.

Viele Grüße
Frank

P.S. In meinen Screenshots hat die Datendefinition einen falschen Namen. Sie ist mit zwei Unterstrichen geschrieben. Nicht täuschen lassen.
Bitte für meine Ideen im Matrix Ideenportal voten:
Slider Control: https://ideas.matrix42.com/ideas/SB-I-45

Christoph
Beiträge: 44
Registriert: 30. Mär 2016, 15:47
Kontaktdaten:

Custom Formulare - JScript Zugriff auf Objektattribute [gelöst]

Beitrag von Christoph » 04. Dez 2018, 13:56

Hallo Frank,

das ist genau was ich brauche - funktioniert perfekt! Vielen Dank für die ausführliche Antwort und das gut erklärte Beispiel - ohne dieses hätte ich die Syntax nicht hinbekommen!

Viele Grüße
Christoph

MRadtke
Beiträge: 10
Registriert: 15. Dez 2016, 09:07
Kontaktdaten:

Re: Custom Formulare - JScript Zugriff auf Objektattribute

Beitrag von MRadtke » 04. Feb 2019, 21:28

Hallo Frank,

hast du auch eine Lösung für die UUX? Ich benötige in einem Dialog bei Create Event in einem Feld den CURRENTUSER, das habe ich soweit schon. Dazu benötige ich noch die Position der jeweiligen Person, die dann direkt angezeigt werden soll.
Beim ersten Aufruf des Dialoges füllt er zwar den CurrentUser, aber nicht die Position. Speichere ich das Objekt ab und öffne erneut den Datensatz zeigt er mir die Position der Person an.
Gibt es eine Idee wie ich den User und seine Position Instant angezeigt bekomme?

Gruß
Mario
FrankPree hat geschrieben:
08. Nov 2018, 08:53
Hallo Christoph,

in der Classic UI oder in der UUX?

Grüße
Frank

Benutzeravatar
FrankPree
Beiträge: 116
Registriert: 25. Aug 2011, 08:41
Kontaktdaten:

Re: Custom Formulare - JScript Zugriff auf Objektattribute

Beitrag von FrankPree » 08. Feb 2019, 14:57

Hallo Mario,

wenn Du Dir weitere Informationen zum Current User in einem Dialog anzeigen möchtest, kannst Du zum Beispiel folgendes tun:
Erstelle Dir im Context eine eigenes berechnetes Attribut wie im Screenshot Solution Builder 1.png beschrieben.
Solution Builder 1.png
(109.17 KiB) 101-mal heruntergeladen
Dann klicke auf AddSource und füge Dir eine Datenquelle hinzu (+Add Source). Diese Quelle zeigt dann auf eine Datenquelle, die Deine gewünschten Informationen enthält.

Also:
Add Source -> custom_user -> Quellenausführungsmodus: Bei Initialisierung und Datenupdate -> Implementierung: Datenquelle: SPSUserClassBase_Default

Dann gehst Du auf den Filter und fügst im erweiterten Modus Deine Filterbedingung mit der CurrentUser Variablen ein. Also wie in Solution Builder 2.png
Solution Builder 2.png
(172.83 KiB) 95-mal heruntergeladen
Dann ziehst Du Dir einfach aus dem $first der Datenquelle, die gewünschten Felder in Dein Formular. So zum Beispiel den Standort (Location).
$first deshalb, weil Du in diesem Fall ja nur ein einzelnes Objekt zurück bekommst (weil im Filter nur jeweils die ID des Current Users übergeben wird). Dann musst Du Dich nicht darum kümmern, wie viele zurück gegebene Elemente in dem Array vorkommen
und angezeigt werden. Zum "Rumprobieren" kannst Du in das Java-Script des Return Wertes ein console.log($value); reinschreiben. So siehst Du zum Beispiel im Chrome mit F12 recht schön, was der Return Wert aus der Datenquelle so alles enthält.

Hilft Dir das schon so weit?

Beste Grüße
Frank
Bitte für meine Ideen im Matrix Ideenportal voten:
Slider Control: https://ideas.matrix42.com/ideas/SB-I-45

Antworten

Zurück zu „Customizing und Reporting“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast