This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information

Ausblenden von Spalten

Allgemeine Fragen zur Entwicklung von und mit JVx.

Ausblenden von Spalten

Postby bmgnet » Thu Dec 10, 2009 11:04 pm

Hallo

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

Danke für die Info.
Bernd
bmgnet
 
Posts: 6
Joined: Wed Oct 21, 2009 12:00 pm

Re: Ausblenden von Spalten

Postby Support@SIB » Fri Dec 11, 2009 10:48 am

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.
User avatar
Support@SIB
 
Posts: 353
Joined: Mon Sep 28, 2009 1:56 pm

Re: Ausblenden von Spalten

Postby bmgnet » Fri Dec 11, 2009 2:13 pm

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
bmgnet
 
Posts: 6
Joined: Wed Oct 21, 2009 12:00 pm

Re: Ausblenden von Spalten

Postby Support@SIB » Fri Dec 11, 2009 2:21 pm

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.
User avatar
Support@SIB
 
Posts: 353
Joined: Mon Sep 28, 2009 1:56 pm

Re: Ausblenden von Spalten

Postby iferle » Thu Oct 21, 2010 3:49 pm

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?
iferle
 
Posts: 6
Joined: Tue Oct 19, 2010 9:45 am
Location: München

Re: Ausblenden von Spalten

Postby Support@SIB » Thu Oct 21, 2010 4:10 pm

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.
User avatar
Support@SIB
 
Posts: 353
Joined: Mon Sep 28, 2009 1:56 pm

Re: Ausblenden von Spalten

Postby iferle » Fri Oct 22, 2010 2:36 pm

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.
iferle
 
Posts: 6
Joined: Tue Oct 19, 2010 9:45 am
Location: München

Re: Ausblenden von Spalten

Postby Development@SIB » Fri Oct 22, 2010 3:36 pm

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!
User avatar
Development@SIB
 
Posts: 325
Joined: Mon Sep 28, 2009 1:54 pm


Return to Development (DE)