Page 1 of 1

setFilter in Verbindung mit ReferenceDefinition

PostPosted: Fri Dec 20, 2013 12:20 pm
by alladinbp
Hallo!

Ich bin auf folgendes Problem mit der aktuellen Version von JVX (1.2) gestoßen:

Das Einschränken von Daten in einem Databook mittels setFilter funktioniert prinzipiell.
Mittels getRowCount() sehe ich auch, dass sich die Anzahl der Zeilen ändert. Wenn ich das DataBook in einer Tabelle anzeigen lasse sieht auch alles richtig aus.

Wenn dieses DataBook jetzt allerdings in einem anderen DataBook als ReferenceDefinition für einen UILinkedCellEditor verwendet wird, dann wird in dem Dropdown der Tabelle das referenzierte DataBook mit allen Zeilen (also ohne Filter) angezeigt.

Code: Select all

// Databook, welches von anderem referenziert werden soll
rdbArticle = new RemoteDataBook();
rdbArticle.setDataSource(dataSource);
rdbArticle.setName("articleData");
rdbArticle.setMemFilter(true); // true/false ändert nichts an dem Fehler
         
rdbArticle.open();
         
rdbArticle.getRowDefinition().getColumnView(UITable.class).setColumnNames("NAME_AND_NUMBER"); // Fehler auch wenn diese Zeile auskommentiert ist

debug(rdbArticle.getRowCount()); // gibt bsp. 315 aus
rdbArticle.setFilter(new Equals("ID", 20));
debug(rdbArticle.getRowCount()); // gibt korrekt 1 aus

//--------------------------------------------------------------------

rdbArticleWithAmount = new RemoteDataBook();
rdbArticleWithAmount.setDataSource(dataSource);
rdbArticleWithAmount.setName("articleWithAmount");
         
rdbArticleWithAmount.open();
         rdbArticleWithAmount.getRowDefinition().getColumnDefinition("ARTICLE_NAME").setLabel("Artikel");
rdbArticleWithAmount.getRowDefinition().getColumnDefinition("AMOUNT").setLabel("Anzahl");
         rdbArticleWithAmount.getRowDefinition().getColumnDefinition("ARTICLE_NAME").getDataType().setCellEditor(new UILinkedCellEditor(new ReferenceDefinition(new String[] {"ARTICLE_ID", "ARTICLE_NAME"}, rdbArticle, new String[] {"ID", "NAME_AND_NUMBER"})));



Die fiktive Tabelle rdbArticleWithAmount hat auch noch eine MasterReference auf eine andere Tabelle gesetzt.

Warum funktioniert setFilter bei dem DataBook allein, aber nicht wenn dieses von einem anderen referenziert wird?

Re: setFilter in Verbindung mit ReferenceDefinition

PostPosted: Fri Dec 20, 2013 12:33 pm
by Support@SIB
Grundsätzlich sollten Sie DataBooks für Auswahllisten immer isoliert verwenden, sprich ausschließlich für Auswahllisten. Beim Öffnen der Auswahlliste werden immer die aktuellen Daten geladen und der Filter "zurückgesetzt". Wenn memFilter aktiviert wurde, dann werden die Daten nicht bei jedem Aufklappen aktualisiert (Hier macht es natürlich einen Unterschied ob ein Mem oder RemoteDataBook verwendet wird, hinsichtlich Server Requests)

Wenn Sie ein DataBook als Auswahlliste und gleichzeitig für die Anzeige in einer UITable verwenden, können Sie beobachten das die Selektion wechselt, nachdem Sie eine Zeile in der Auswahlliste gewählt haben und auch manuelle Filter werden beim Aufklappen der Auswahlliste geändert.

Sie können den Filter der Auswahlliste jedoch beeinflussen, mit folgenden Methoden:

Code: Select all
setSearchColumnMapping(...)
setAdditionalCondition(...)

Re: setFilter in Verbindung mit ReferenceDefinition

PostPosted: Fri Dec 20, 2013 12:43 pm
by alladinbp
Support@SIB wrote:Grundsätzlich sollten Sie DataBooks für Auswahllisten immer isoliert verwenden, sprich ausschließlich für Auswahllisten. Beim Öffnen der Auswahlliste werden immer die aktuellen Daten geladen und der Filter "zurückgesetzt". Wenn memFilter aktiviert wurde, dann werden die Daten nicht bei jedem Aufklappen aktualisiert (Hier macht es natürlich einen Unterschied ob ein Mem oder RemoteDataBook verwendet wird, hinsichtlich Server Requests)


In dieses Fall wird das referenzierte DataBook auch nur für das Dropdown-Feld verwendet. Ich wollte nur aussagen, dass der Filter funktioniert wenn ich dieses DataBook in einer Tabelle darstelle.

Support@SIB wrote:Wenn Sie ein DataBook als Auswahlliste und gleichzeitig für die Anzeige in einer UITable verwenden, können Sie beobachten das die Selektion wechselt, nachdem Sie eine Zeile in der Auswahlliste gewählt haben und auch manuelle Filter werden beim Aufklappen der Auswahlliste geändert.

Sie können den Filter der Auswahlliste jedoch beeinflussen, mit folgenden Methoden:

Code: Select all
setSearchColumnMapping(...)
setAdditionalCondition(...)


Vielen Dank! setAdditionalCondition() scheint zu funktionieren. Natürlich ist es gut hier verschiedene Filter setzen zu können, allerdings wäre es schön wenn der Filter des DataBooks standardmäßig auch für die LinkCellEditoren gelten würde.

Re: setFilter in Verbindung mit ReferenceDefinition

PostPosted: Fri Dec 20, 2013 1:01 pm
by Support@SIB
Den Filter wiederzuverwenden ist nicht angedacht damit die Suche innerhalb der Auswahlliste komfortabel und einfach umzusetzen ist. Sie können gerne einen Feature Request erstellen im Support System.