Hello everybody
I need some help for a feature i'm not sure is available in smartGWT. I'm using the last version.
I have 2 tables displayed on the same page with a divider in the middle.
They have the same id but different fields.
When I click on a column on the first table, I wanna reflect the sorting on the second table (they need to be joined based on the primary key to do that)
I first tried creating one datasource for both tables (easier for the sorting) displaying only the right fields in each table (hidden true / false) but this won't work as both tables have to be displayed on the same page - fields get either all showed or all hidden as each table holds a reference to the same datasource...
So I tried another approach: I created 2 different datasources with the same primary key.
I declared the second datasource as "inheritsFrom" the first datasource (so that in the second datasource also the fields from the first datasource are available) and showLocalFieldsOnly="true".
They do get displayed correctly. Now for the sorting I put a headerClickHandler on the columns of the first table, and looks like this:
firstTable.addHeaderClickHandler(new HeaderClickHandler() {
@Override
public void onHeaderClick(HeaderClickEvent event) {
secondTable.setSort(firstTable.getSort());
}
});
Now, this thing has a very strange behaviour.
The sorting on the second table happens quite randomly.
Or better: if I click on the header of the primaryKey of the first table, they both get sorted.
If afterwards I click on the header on another column of the first table, the second gets sorted. OK.
But from then on, whatever header I click in the first table, the column on the first table gets sorted but the sorting isn't "propagated" to the second table. Nothing happens there.
When I debug I see it ALWAYS enters the onHeaderClick method and it executed the instruction
secondTable.setSort(firstTable.getSort());
with no exeptions, but nothing happens.
I tried this instead
ListGridField clickedColumn = firstTable.getField(event.getFieldNum());
secondTable.sort(clickedColumn.getName(), clickedColumn.getSortDirection());
because this sort method is returning a boolean which says if the sorting has happened or not.
In this case actually "null" is returned. Why?
Should I find a solution to this specific problem, or am I taking the wrong approach here?
In this case what's the best solution to make a table sort depending on another table?
Is there any way in smart gwt to sort a table passing a list of values in the right order for a specific column (for me would be the primary key)?
Thanks a lot for any suggestions, I'm kind of out of ideas here.
Cheers
Laura
I need some help for a feature i'm not sure is available in smartGWT. I'm using the last version.
I have 2 tables displayed on the same page with a divider in the middle.
They have the same id but different fields.
When I click on a column on the first table, I wanna reflect the sorting on the second table (they need to be joined based on the primary key to do that)
I first tried creating one datasource for both tables (easier for the sorting) displaying only the right fields in each table (hidden true / false) but this won't work as both tables have to be displayed on the same page - fields get either all showed or all hidden as each table holds a reference to the same datasource...
So I tried another approach: I created 2 different datasources with the same primary key.
I declared the second datasource as "inheritsFrom" the first datasource (so that in the second datasource also the fields from the first datasource are available) and showLocalFieldsOnly="true".
They do get displayed correctly. Now for the sorting I put a headerClickHandler on the columns of the first table, and looks like this:
firstTable.addHeaderClickHandler(new HeaderClickHandler() {
@Override
public void onHeaderClick(HeaderClickEvent event) {
secondTable.setSort(firstTable.getSort());
}
});
Now, this thing has a very strange behaviour.
The sorting on the second table happens quite randomly.
Or better: if I click on the header of the primaryKey of the first table, they both get sorted.
If afterwards I click on the header on another column of the first table, the second gets sorted. OK.
But from then on, whatever header I click in the first table, the column on the first table gets sorted but the sorting isn't "propagated" to the second table. Nothing happens there.
When I debug I see it ALWAYS enters the onHeaderClick method and it executed the instruction
secondTable.setSort(firstTable.getSort());
with no exeptions, but nothing happens.
I tried this instead
ListGridField clickedColumn = firstTable.getField(event.getFieldNum());
secondTable.sort(clickedColumn.getName(), clickedColumn.getSortDirection());
because this sort method is returning a boolean which says if the sorting has happened or not.
In this case actually "null" is returned. Why?
Should I find a solution to this specific problem, or am I taking the wrong approach here?
In this case what's the best solution to make a table sort depending on another table?
Is there any way in smart gwt to sort a table passing a list of values in the right order for a specific column (for me would be the primary key)?
Thanks a lot for any suggestions, I'm kind of out of ideas here.
Cheers
Laura
Comment