Page 1 of 1

Ausblenden von Spalten

PostPosted: Thu Dec 10, 2009 11:04 pm
by bmgnet
Hallo

Ist es möglich bei einer UITable Spalten auszublenden oder muss man das über das DataBook steuern?

Danke für die Info.
Bernd

Re: Ausblenden von Spalten

PostPosted: Fri Dec 11, 2009 10:48 am
by Support@SIB
Die sichtbaren Spalten werden über das DataBook definiert:

Code: Select all
rdbInfo.getRowDefinition().setTableColumnNames(new String [] { "STANDORT", "KENNZAHL"});


Mit der Release von JVx 0.7, wird es auch möglich sein, einzelne Spalten ein/auszublenden. Dadurch müssen nicht alle sichtbaren Spalten definiert werden, sondern nur die nicht sichtbaren. Außerdem wird das vararg Sprachkonstrukt von Java besser integriert:

Code: Select all
rdbInfo.getRowDefinition().setTableColumnNames("STANDORT", "KENNZAHL");


Hinweis

Spalten mit der Bezeichnung ID oder Spaltenbezeichnungen die mit _ID enden, werden automatisch ausgeblendet und müssen bei Bedarf manuell eingeblendet werden. Zusätzlich werden Spalten mit binärem Inhalt automatisch ausgeblendet.

Re: Ausblenden von Spalten

PostPosted: Fri Dec 11, 2009 2:13 pm
by bmgnet
Bezüglich
-> Spalten mit der Bezeichnung ID oder Spaltenbezeichnungen die mit _ID enden, werden automatisch ausgeblendet.

Ist es gewollt das man diese Spaltennamen auch groß schreiben muss damit diese Funktionalität wirkt?

Ich nutze Mysql 5.0.

Danke
Lg Bernd

Re: Ausblenden von Spalten

PostPosted: Fri Dec 11, 2009 2:21 pm
by Support@SIB
Im Moment, JA.
Mit JVx 0.7 wird das aber nicht mehr so sein.

Wir empfehlen generell einheitliche Namenskonventionen für alle Datenbanken und um Probleme beim Wechsel der Datenbank zu vermeiden.

Mit Oracle zB haben Sie mit Spaltenbezeichnungen in Kleibuchstaben nur wenig Freude.

Re: Ausblenden von Spalten

PostPosted: Thu Oct 21, 2010 3:49 pm
by iferle
Hier scheint es Änderungen in der API (derzeit 0.8) gegeben zu haben. Die Methode setTableColumnNames gibt es nicht mehr.
Wie mache ich das Ausblenden von Spalten in der aktuellen Version?

Re: Ausblenden von Spalten

PostPosted: Thu Oct 21, 2010 4:10 pm
by Support@SIB
Danke für den Hinweis zu diesem Posting!

Mit Version 0.8 wurde set/getColumnView eingeführt, um die Unabhängigkeit von den Controls zu gewährleisten!

Details dazu: Blog, Support System


Sie können mit
Code: Select all
<IRowDefinition>.setColumnView(ITableControl.class, new ColumnView(String...));

eine spezifische Liste an Spalten - in diesem Fall für Tabellen - setzen.

Sie können die Defaults, für alle Controls, mit:
Code: Select all
<IRowDefinition>.getColumnView(null);

ermitteln, und mit
Code: Select all
<IRowDefinition>.setColumnView(null, ...);

die Defaults, für alle Controls, verändern.

Beispiel um eine Column aus den Defaults zu entfernen:
Code: Select all
ColumnView cview = <IRowDefinition>.getColumnView(null);
cview.removeColumnNames("NAME");


Die Konstruktoren der Klasse javax.rad.model.ColumnView sind ev. hilfreich.


Anmerkung

Die Default Einstellung berücksichtigt die IgnoredColumnNames der RowDefinition:

Code: Select all
RowDefinition.setDefaultIgnoredColumnNames(String...);
RowDefinition.getDefaultIgnoredColumnNames();

z.B die _ID Spalten werden ausgeblendet.

Re: Ausblenden von Spalten

PostPosted: Fri Oct 22, 2010 2:36 pm
by iferle
Hmm, ich kriege es nicht hin.
Ich möchte in der FirstApplication z.B. die Spalte 'Street' ausblenden (Datenbank ist DB2):
Der Versuch mit:
Code: Select all
rdbContacts.setDataSource(dataSource);
rdbContacts.setName("contacts");
IRowDefinition iRowDef = rdbContacts.getRowDefinition();
ColumnView cview = iRowDef.getColumnView(null);
cview.removeColumnNames("STREET");
iRowDef.setColumnView(null, cview);
rdbContacts.setRowDefinition(iRowDef);
rdbContacts.open();


schlägt nach dem Start mit der Fehlermeldung: "Column index out of range" fehl.

Re: Ausblenden von Spalten

PostPosted: Fri Oct 22, 2010 3:36 pm
by Development@SIB
Kein Problem, eine kurze Lösung wäre folgende:
Code: Select all
rdbContacts.setDataSource(dataSource);
rdbContacts.setName("contacts");
rdbContacts.open();

rdbContacts.getRowDefinition().getColumnView(null).removeColumnNames("STREET", ...);

Es ist nicht nötig, die RowDefinition bzw. die ColumnView wieder zu übergeben:
Code: Select all
iRowDef.setColumnView(null, cview);
rdbContacts.setRowDefinition(iRowDef);

da immer auf die original Referenzen zugegriffen wird!

Wir versuchen den Source Code Aufwand so gering als möglich zu halten.


Anmerkung

Erst nachdem das DataBook geöffnet wurde, sind die Meta Daten bekannt und somit bewirkt das removeColumnNames vor dem open() noch nichts!

Dadurch das bereits vor open() auf die ColumnView zugegriffen wird und noch keine Columns bekannt waren, wurde eine "leere" ColumnView verwendet (siehe Support System). In Folge dessen und eines Problems in der Table (keine Columns) bekamen Sie die Exception (siehe Support System).

Die Probleme wurden bereits behoben, treten jedoch nicht auf, wenn die ColumnView nach open() verändert wird!