Page 1 of 1

Anfängerproblem: Editieren über Dropdownlist

PostPosted: Mon Nov 02, 2015 2:42 pm
by stephanf
Hallo,

ich habe meine erste Testapplikation geschrieben, hänge aber an dem Problem der Dropdownlisten. Der Wert für das Feld kommt aus einer zweiten Tabelle. Was mir nicht klar ist: Wann benötige ich
Code: Select all
rdb.setMasterReference(...)
und wann
Code: Select all
ReferenceDefinition referenceDefinition = new ReferenceDefinition();
      referenceDefinition.setReferencedDataBook(pReferencedDataBook);
      referenceDefinition.setReferencedColumnNames(pReferenceColumnNames);
      referenceDefinition.setColumnNames(pColumnNames);

      UILinkedCellEditor linkedCellEditor = new UILinkedCellEditor();
      linkedCellEditor.setLinkReference(referenceDefinition);
      linkedCellEditor.setTableHeaderVisible(false);

      pDataBook.getRowDefinition().getColumnDefinition(pColumnNames[1]).getDataType().setCellEditor(linkedCellEditor);


Ich habe nur die zweite Variante verwendet und ich kann in einer Tabelle den neuen Wert wählen und der zugehörige Schlüssel, der auch in der Tabelle angezeigt wird, ändert sich auch, aber der zugehörige Text, den ich in der Auswahlliste gewählt habe, bleibt nicht in der Tabelle stehen. Das Feld bleibt danach leer.

Für einen Tip oder ein kleines Beispiel wäre ich sehr dankbar.

Gruß
Frank

Re: Anfängerproblem: Editieren über Dropdownlist

PostPosted: Mon Nov 02, 2015 3:36 pm
by Support@SIB
Die Methode setMasterReference wird benötigt, um eine Master/Detail Beziehung herzustellen:

Das Detail hängt immer an genau einem Master:

Code: Select all
setMasterReference(new ReferenceDefinition(new String[] {"MASTER_ID"},
                                           master, new String[] {"ID"});

Die Spalte im Master: ID
Die Spalte im Detail: MASTER_ID

Natürlich können auch mehrere Spalten als zusammengesetzter Schlüssel verwendet werden!

Um eine Auswahlliste zu definieren gibt es zwei Möglichkeiten:
Automatisch (aufgrund der DB FKs) - siehe Example for automatic link cell editors

Durch diesen Automatismus wird natürlich enorm viel Source Code gespart und die Fehleranfälligkeit wird reduziert.

Natürlich können auch server-seitig, für eine Storage, die Auswahllisten konfiguriert werden.

Wenn die Auswahllisten manuell im Client Code definiert werden sollen, dann müssen diese mittels UILinkedCellEditor erstellt werden, z.B.:

Code: Select all
UILinkedCellEditor imageLook = new UILinkedCellEditor(new ReferenceDefinition(
                                                 new String[] {"IMAGE", "IMAGENAME"},
                                                 mdbImagesLook,
                                                 new String[] {"IMAGE", "IMAGENAME"}));
      rdbTeams.getRowDefinition().getColumnDefinition("IMAGENAME").getDataType().setCellEditor(imageLook);


Bei manuellen Auswahllisten gilt zu beachten, das im Normalfall eine ID und mindestens eine Anzeigespalte benötigt wird, sprich ein Schlüssel und mindestens ein Wert dazu. Wenn aus einer Tabelle selektiert wird, die nur die ID enthält dann sollte eine View erstellt werden, die zur ID auch noch den Anzeigewert in einer Spalte anbietet (oder es wird im GUI Code eine temporäre Spalte angelegt).

Die Auswahlliste schreibt immer die angegebenen Spalten (aus der ReferenceDefinition) in die zugrundeliegende Row zurück.

In der DemoERP Anwendung wurden automatische Auswahllisten verwendet und diese könnten Sie ggf. debuggen um zu sehen wie dies funktioniert.

Re: Anfängerproblem: Editieren über Dropdownlist

PostPosted: Tue Nov 03, 2015 4:37 pm
by stephanf
Steht zum Debuggen von DemoERP auch der Sourcecode zur Verfügung?
Ich konnte diesen nicht finden.

Re: Anfängerproblem: Editieren über Dropdownlist

PostPosted: Tue Nov 03, 2015 5:10 pm
by Support@SIB
Die DemoERP Anwendung ist bei SourceForge gehostet, siehe:

http://sourceforge.net/p/erpdemoapplica ... s/DemoERP/