2012-04-03 5 views
0

Ich habe eine xPage mit mehreren Instanzen desselben benutzerdefinierten Steuerelements. Wie erreiche ich den Wert eines Felds für ein bestimmtes benutzerdefiniertes Steuerelement über eine Schaltfläche auf meiner xPage?Abrufen eines Feldwerts aus einem benutzerdefinierten Steuerelement, wenn mehrere Instanzen des benutzerdefinierten Steuerelements vorhanden sind

Normalerweise würde ich so etwas wie:

ctlName = "radioGroupCMBUAction"; var changeType = getComponent (ctlName) .getValue();

Wenn nur eine Instanz des Steuerelements vorhanden war. Wie würde ich dies mit mehreren Instanzen der Kontrolle tun?

+0

Bruce, können Sie einige Beispiel-Code hinzufügen, so dass wir sehen können, wie Sie ids auf die einzelnen Custom Controls zuweisen? –

+0

Pro, das ist meine Frage. Um jedem Steuerelement eine eindeutige ID mit einer eindeutigen ID zuweisen zu können. Leute haben mir hier mit der verbindlichen http://stackoverflow.com/questions/9913331/dynamic-data-binding geholfen. Aber ich würde lieber nicht dynamisch eine ID erstellen. Ich kann nicht glauben, dass das schwer zu tun ist. Sie würden denken, ich könnte einfach auf die benutzerdefinierte Steuerelement-ID verweisen, um zu den einzelnen Steuerelementen zu gelangen. –

Antwort

0

Ohne den Code bin ich nicht sicher, ob .getValue() als arbeiten, um für das es ein Feld herausziehen passieren muß, wo als eine benutzerdefinierte Steuerung eine Wiederholung im Innern usw.

haben könnte

Vorausgesetzt, dass es funktioniert, wenn jede der customControl-Instanzen eine ID hat, die eindeutig voneinander ist, sollte es gut funktionieren, da jede Instanz ihre eigenen vriables darin haben sollte.

Andere Ideen könnten jedoch darin bestehen, eine Zeichenfolge zu übergeben und diese Zeichenfolge als den Namen einer Bereichsvariablen innerhalb des benutzerdefinierten Steuerelements zu verwenden, die von überall her herausgezogen werden kann. Ich habe dies getan, vor dem ich für einen String eine Eigenschaft auf dem benutzerdefinierte Steuerelement erstellt und innerhalb des Custom Controls verwendet

viewScope[compositeData.customProperty] = value. 

dann außerhalb des Kontextes der benutzerdefinierten Kontrolle Ich bin mir bewusst, die Saite, die ich in so dass ich bestehen wäre in der Lage, diesen Wert wieder herauszuziehen. Einreichen bedeutet, dass sich mehrere Instanzen nicht gegenseitig überschreiben.

Oder Sie könnten das Feld in der benutzerdefinierten Steuerung in ein Dokument schreiben, entweder um es herauszubringen oder als die Endlösung für Ihr Problem, es zu speichern.

+0

Wie geben Sie jedem Steuerelement eine eindeutige ID? Können und ID berechnet werden? Ich habe bemerkt, dass das Steuerelement eine ID mit dem zugeordneten cc-Namen zu haben scheint. Beispiel MyCC1: MyField1. Ich habe versucht, das in getComponent zu verwenden, aber es hat nicht funktioniert. Ich würde wirklich gerne zum Feld selbst gehen, denn wenn ich es jemals funktioniere, möchte ich in der Lage sein, zu einem Feld zu gehen, wenn eine Validierung fehlschlägt. –

+0

Wenn Sie die ID für ein Steuerelement definieren, wird dies IMMER in eine eindeutige ID konvertiert, die von der xpages-Umgebung generiert wird. (so etwas wie view: controlid: fieldid) – jjtbsomhorst

+0

ja wie jjtbsomhorst sagte, du musst keine vollständige eindeutige ID erstellen. Fügen Sie auf dem Steuerelement einfach eine ID-Eigenschaft hinzu und XPages fügt den Rest hinzu. z. dann wird dies in so etwas wie Ansicht gedreht werden: panel_34: Kontrolle: Probe man es von GetComponent Aufruf („Probe“) erhalten kann; Wenn Sie mit dem Feld interagieren müssen, ist mein erster Gedanke vielleicht mehr von diesem Code sollte in der benutzerdefinierten Steuerung sein selbst, versagt, dass ich tun würde, was ich mit der Bereichsvariable erwähnt habe und halten Sie die ID des Feldes also könnten Sie getComponent (viewScope ["control1"]) etc. –

0

Nicht sicher, ob dies Ihnen helfen kann ..? Vor einiger Zeit schrieb ich einen Tipp „private“ scoped Variablen in Bezug auf:

http://dontpanic82.blogspot.com/2010/03/xpages-tip-regarding-private-scoped.html

+0

Ja danke, ich realisiere ich c eine Verwendung Scope-Variablen. Was ich tun möchte, ist, an die Steuerung selbst zu kommen, damit ich den Fokus setzen kann (wenn ich das jemals funktioniere). –

Verwandte Themen