Seite 1 von 1

DropDown mit Zellenwerten aus Tabelle füllen

Verfasst: 25.01.2010, 14:59
von Elminster
Hallo Acronauten,

mein Name hier ist Elminster und befinde mich erst seit kurzem auf dieser Plattform.
Habe schon viel dazu gelernt was LCD angeht und finde die Seite klasse.
Auf diesem Weg wollt ich mich kurz vorstellen und Euch Zeitgleich meine erste Frage stellen.

Frage:
Habe eine Tabelle mit 6 Spalten. Zelle 2 wird dynamisch gefüllt über nen Funktionsaufruf... diese Zählt auch den Index höher, wenn ich eine weitere Zeile hinzufüge (z.B. Test1 Test2.... TestN).
Nun möchte ich, dass in einer anderen Tabelle ein Dropdown Feld den Wert aus Zelle 2 bekommt incl. Index, wenn Zelle 3 und Zelle 4 gefüllt ist.
Dieser soll auch im DropDown zur Auswahl bleiben.

Wenn ich Dies nun mit einer if Abfrage reinschreibe erscheint nur Object4711 o.ä.
Ich fülle das DropDownFeld mit rawValue.
Scheint wie gesagt nicht zu klappen.

Hat jmd. eine Idee oder ist dies garnicht möglich ausser mit einer dyn. Füllung über eine CSV Datei o.ä.?

Hoffe Ihr konntet mir folgen und bedanke mich schonmal!

LG
Elminster

Aktuallisierung:
Habe es mal mit einem Script von Walde (SuFu) probiert.
Also addItem(Funktionsaufruf);
Wenn ich dort aber die Funktion aufrufe, welche auch Zelle 2 füllt... kommt nur EMPTY.
Vielleicht hilft Euch das bissel weiter?

Aktuallisierung2:
Das Anzeigen klappt mittels additem im DD Feld und dem Caption des Wertes.

Frage: Wieso funktioniert recalculate auf dem DD Feld nicht? Weil ich Change Index nicht anwählen kann? Gibt es da eine Lösung??

DropDown mit Zellenwerten aus Tabelle füllen

Verfasst: 28.01.2010, 18:07
von Elminster
Keiner eine Idee?

DropDown mit Zellenwerten aus Tabelle füllen

Verfasst: 28.01.2010, 21:11
von walde
Hallo Elminster,

 

Es ist möglich über eine Schleife (wird vor dem Öffnen des DropDowns ausgeführt) die Werte der Zellen und deren Index auszulesen und damit das DropDown zu füllen.

 

Gruß,

 

Walde

DropDown mit Zellenwerten aus Tabelle füllen

Verfasst: 29.01.2010, 01:17
von Elminster
Hallo Walde,

dass ist ja klasse funktioniert super!
Aber für mich als Neuling etwas zu hoch. Noch stehe ich mit dieser "Referenzsyntax" wenn das dazu gehört xfa.... auf dem Kriegsfuß.

Vielleicht ist es auch etwas spät aber ich finde nicht den Hebel mit dem ich die Übergabe in das DropDown Feld auf die zB Erste Zelle beschränken kann!

In Deinem Beispiel werden alle Werte ins Drop Down Feld übernommen... ich möchte nur das erste und die andere nicht.

PageContent habe ich gelesen, gibt alle Werte der Felder gleichen Typs zurück (berichtige mich wenn ich Falsch liege) aber weder mit den Variablen Zählern noch anders kann ich die 3 anderen Felder von der Selektion ausschließen.

Vielleicht weisst Du ja auf anhieb was mein Fehler ist.

Dazu kommt, dass mein ausgewählter Eintrag im DropDown Feld, ganz unten noch einmal auftaucht. Änder ich dann die Auswahl, ändert sich auch wieder der unterste Eintrag.

Sorry erstmal für das Löchern, aber ich lerne noch :)

Danke Dir jedenfalls für Deine Mühen. Hat mir sehr geholfen.

Gruß
Elminster

DropDown mit Zellenwerten aus Tabelle füllen

Verfasst: 29.01.2010, 09:48
von walde
Hallo Elminster,

 

Da meine Beispieldatei eine dynamische Tabelle enthält wird die "Zeile1" mehrmals geklont (Zeile1[0], Zeile1[1]). Dies bedeutet, dass diese bei jedem Klonen einen zusätzliche Instanz bekommt (die Zahl in den "[]" Klammern).

Wenn Sie das Auslesen der Werte in der Beispieldatei nur auf die erste Zeile begrenzen möchten, so sollten Sie diesen Skript:

Code: Alles auswählen

for (var i = 0; i < xfa.host.numPages; i++){
var oFields = xfa.layout.pageContent(i, "field");
var nodesLength = oFields.length;
for (var j = 0; j < nodesLength; j++){
var oItem = oFields.item(j);
if (oItem.ui.oneOfChild.className != "button" & oItem.parent.name == "Zeile1" & oItem.rawValue != null){
this.addItem(oItem.rawValue);
}
}
}
 

durch diesen ersetzten:

Code: Alles auswählen

for (var i = 0; i < xfa.host.numPages; i++){
var oFields = xfa.layout.pageContent(i, "field");
var nodesLength = oFields.length;
for (var j = 0; j < nodesLength; j++){
var oItem = oFields.item(j);
if (oItem.ui.oneOfChild.className != "button" & oItem.parent.name == "Zeile1" & oItem.rawValue != null & oItem.parent.instanceIndex == 0){
this.addItem(oItem.rawValue);
}
}
}

 

Dadurch werden nur die Werte von Objekten in die DropDown Liste aufgenommen, die nachfolgende Bedingungen erfüllen:

1. className nicht Taste,

2. Name des Elternobjekts ist Zeile1,

3. Der Wert ist nicht null,

4. Die Elterninstanz ist 0 (1.Instanz).

 

Der Rest wird herausgefiltert.

 

Gruß,

 

Walde


DropDown mit Zellenwerten aus Tabelle füllen

Verfasst: 01.02.2010, 20:49
von Elminster
Hi Walde,

danke nochmals für die Hilfe... leider beschränkst Du die Abarbeitung auf die gesamte erste Zeile der Tabelle..... aber nit auf die erste Zelle der ersten Zeile.... wenn Du verstehst was ich meine.

Danke DIr dennoch vielmals :)

DropDown mit Zellenwerten aus Tabelle füllen

Verfasst: 01.02.2010, 22:33
von Elminster
Ah, gefunden.

Vielleicht interessiert es noch wen.

Die If Anweisung kann man weiterhin ergänzen mit

& oItem.name == "Zellenname"

Abermals vielen Dank.

Beste Grüße
Elminster

DropDown mit Zellenwerten aus Tabelle füllen

Verfasst: 20.11.2012, 14:45
von Comadreja
Hallo Walde,

ich wollte mich bei Dir für alle tollen Skripte und Tipps bedanken. Sie haben mir in vielen Fällen sehr viel geholfen.

Comadreja