I have found an interesting issue, and I am wondering if I am misusing or
overlooking something. I have a large CellTable that is vertically
scrollable. I want to show all the rows at once instead of traditional
pagination. So at the bottom of my table I have a row that the user can
click to load 50 more rows. I have provided the table with a custom table
builder (setTableBuilder(new Builder());). When the user clicks "load more"
I query the data, add to the ListDataProvider and
call table.setVisibleRange(0, dataProvider.getList().size());.
I put a log statement in the
@Override
public void buildRowImpl(Object rowValue, int absRowIndex) {
}
method to see when it was building rows. I notice that it would build
0-dataProvider.getList().size() (all the rows), then it would build
oldLength-dataProvider.getList().size() (the new rows). For instance, if I
have 100 rows and then load 50 more it would build 0-150, and then rebuild
100-50. What I want is for it to only build the new rows, obviously.
So I start debugging to see why it is rebuilding the whole table each time.
What I found was in com.google.gwt.user.cellview.client.HasDataPresenter<T>
it would set the "redrawRequired" flag to true at line 1325:
else if (range1 == null && range0 != null && range0.getStart() == pageStart
&& (replaceDiff >= oldRowDataCount || replaceDiff > oldPageSize)) {
// Redraw if the new data completely overlaps the old data.
redrawRequired = true;
}
So my question is why does it think that the new data completely overlaps
the old data?
Am I using something incorrectly, is there a better way? This gets to be
quite a slow down when it has to redraw thousands of rows that don't need
to be redrawn.
Thanks,
Will
--
You received this message because you are subscribed to the Google Groups "GWT
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.