Custom Formulare - JScript Zugriff auf Objektattribute
Custom Formulare - JScript Zugriff auf Objektattribute
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
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
Re: Custom Formulare - JScript Zugriff auf Objektattribute
Hallo Christoph,
in der Classic UI oder in der UUX?
Grüße
Frank
in der Classic UI oder in der UUX?
Grüße
Frank
Re: Custom Formulare - JScript Zugriff auf Objektattribute
Hallo,
in der Classic UI.
Gruß
Christoph
in der Classic UI.
Gruß
Christoph
Re: Custom Formulare - JScript Zugriff auf Objektattribute
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: Im benutzerdefinierten Steuerlement nutzt Du folgenden Code:
Damit wird Dir nach Auswahl eines Standortes, das Feld Name aus der Relation SPSLocation in Deinem Attributfeld Name automatisch eingeblendet.
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.
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.
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: Im benutzerdefinierten Steuerlement nutzt Du folgenden Code:
Code: Select all
<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>
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: Select all
<sps:DefaultValue
displayexpression="T(SPSLocationClassBase).IRGENDEINATTRIBUT"
destinationcontrolid="Ud_FormularAufrufClassBaseIRGENDEINFELDNAME"/>
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.
Custom Formulare - JScript Zugriff auf Objektattribute [gelöst]
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
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
Re: Custom Formulare - JScript Zugriff auf Objektattribute
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
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
Re: Custom Formulare - JScript Zugriff auf Objektattribute
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. 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 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
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. 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 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
-
- Posts: 712
- Joined: 07. May 2009, 18:27
- Location: Burscheid
- Contact:
Re: Custom Formulare - JScript Zugriff auf Objektattribute
Ich versuche es einmal in diesem Thread.
Ich habe ein eigenes CI, wo ich im Formular einen User (Beziehung zur SPSUserClassBase) abfrage und einen Pickup Wert.
in der eigenen Datendefinition habe ich also hier den CUSTUser (ID aus der SPSUserClassBase) und das Value von meinem Pickup Wert (CUSTfebiSAPRoles)
Wie komme ich jetzt an das CUSTfebiSAPRoles Value des CurrentUser, der ja hier der "CUSTUser" ist?
Ich habe versucht, meine Source hinzuzufügen, den Currentuser im $filter zu filtern. Console.log sagt aber "undefined"
Ich habe ein eigenes CI, wo ich im Formular einen User (Beziehung zur SPSUserClassBase) abfrage und einen Pickup Wert.
in der eigenen Datendefinition habe ich also hier den CUSTUser (ID aus der SPSUserClassBase) und das Value von meinem Pickup Wert (CUSTfebiSAPRoles)
Wie komme ich jetzt an das CUSTfebiSAPRoles Value des CurrentUser, der ja hier der "CUSTUser" ist?
Ich habe versucht, meine Source hinzuzufügen, den Currentuser im $filter zu filtern. Console.log sagt aber "undefined"
Re: Custom Formulare - JScript Zugriff auf Objektattribute
Also du musst gar nicht currentUser dort über den Context mit reinziehen. Ich habe eben die Erfahrung gemacht, wenn du Filter nutzt bei der Auswahl eines Objekt reicht es aus CurrentUserID() zu schreiben.
So sieht das z.B. bei mir aus, wenn ich ein Dialog habe, wo der User ein Asset auswählen soll aber nur welche angezeigt werden, wo das Asset der Kostenstelle zugeordnet ist, wo der CurrentUser KeyUser ist:
T(SPSCommonClassBase).CostCenter.Ud_KeyUser.ID = CURRENTUSERID()
Du müsstet bei deinem Feld im Dialog auf den Filter gehen und dort eigentlich nur dein Attribut = CURRENTUSERID() setzen
Grüße
So sieht das z.B. bei mir aus, wenn ich ein Dialog habe, wo der User ein Asset auswählen soll aber nur welche angezeigt werden, wo das Asset der Kostenstelle zugeordnet ist, wo der CurrentUser KeyUser ist:
T(SPSCommonClassBase).CostCenter.Ud_KeyUser.ID = CURRENTUSERID()
Du müsstet bei deinem Feld im Dialog auf den Filter gehen und dort eigentlich nur dein Attribut = CURRENTUSERID() setzen
Grüße
-
- Posts: 712
- Joined: 07. May 2009, 18:27
- Location: Burscheid
- Contact:
Re: Custom Formulare - JScript Zugriff auf Objektattribute
In welchem Feld meinst du? In der Source bei $filter? Im Ausdruck (JavaScript) des Attributs?
Re: Custom Formulare - JScript Zugriff auf Objektattribute
Hallo,
da ich den Thread mal gestartet hatte , vielleicht kurz der Antwortversuch: Ich denke es ist der Parameter "Filterausdruck" des Objektwähler-Controls gemeint.
Gruß Christoph
da ich den Thread mal gestartet hatte , vielleicht kurz der Antwortversuch: Ich denke es ist der Parameter "Filterausdruck" des Objektwähler-Controls gemeint.
Gruß Christoph
Who is online
Users browsing this forum: No registered users and 4 guests