Probably you registered more than one the handler.
On 19 October 2014 14:11, Grisha Shoihet <gshoihet@gmail.com> wrote:
hello,--I am new in GWT and try to implement AsyncDataProvider with DataGrid and SimplePager.All working as expected except strange behavior in SearchResultsAsyncDataProvider.I need to update DataGrid each time with new results and it is working , but when I try to use pagination seems that DataGrid fire events for all previous results also(maybe its related to history mechanism).Please advice if you have any idea?I use mvp with activities and places parent.public class SearchResultsAsyncDataProvider extends AsyncDataProvider<SearchDocument> {Logger logger = Logger.getLogger("SearchResultsAsyncDataProvider");private final ClientFactory clientFactory;private String searchQuery = null;public SearchResultsAsyncDataProvider(String searchQuery,final ClientFactory clientFactory) {this.searchQuery = searchQuery;this.clientFactory = clientFactory;}/*** {@link #onRangeChanged(HasData)} is called when the table requests a new* range of data. You can push data back to the displays using* {@link #updateRowData(int, List)}.*/@Overrideprotected void onRangeChanged(HasData<SearchDocument> display) {//here i expect to once access...}---------------------------------------------------------------------------------------------------------------------------------------------------------------public class SearchResultsViewImpl extends Composite implements SearchResultsView{private static SearchResultsViewImplUiBinder uiBinder = GWT.create(SearchResultsViewImplUiBinder.class);interface SearchResultsViewImplUiBinder extends UiBinder<Widget, SearchResultsViewImpl> {}@UiFieldLabel labelInformation;@UiField(provided = true)DataGrid<SearchDocument> dataGridSearchResults;@UiField(provided = true)SimplePager simplePagerSearchResults;private SearchResultsPresenter searchResultsPresenter;private SearchResultsAsyncDataProvider searchResultsAsyncDataProvider;private final String COLUMN_NAME = "Name";private TextColumn<SearchDocument> columnName;public SearchResultsViewImpl(){this.dataGridSearchResults = new DataGrid<SearchDocument>();this.dataGridSearchResults.setEmptyTableWidget(new Label("No Data to Display"));this.simplePagerSearchResults = new SimplePager();initWidget(uiBinder.createAndBindUi(this));//this.setSize("500px", "500px");this.dataGridSearchResults.setSize("500px","500px");this.buildGrid();}private void buildGrid(){// Build each of the 7 columnscolumnName = buildColumnName();// Add the columns to the widgetthis.dataGridSearchResults.addColumn(columnName,buildHeader(COLUMN_NAME), buildHeader(COLUMN_NAME));this.dataGridSearchResults.setColumnWidth(0, 60, Unit.PX);// Make efficient for IE//this.dataGridSearchResults.setSkipRowHoverCheck(true);//this.dataGridSearchResults.setSkipRowHoverFloatElementCheck(true);//this.dataGridSearchResults.setSkipRowHoverStyleUpdate(true);}private TextColumn<SearchDocument> buildColumnName(){columnName = new TextColumn<SearchDocument>(){@Overridepublic String getValue(SearchDocument object){return object.getName();}};columnName.setDataStoreName(COLUMN_NAME);columnName.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT);columnName.setVerticalAlignment(HasVerticalAlignment.ALIGN_TOP);return columnName;}private Header<String> buildHeader(final String text){Header<String> head = new Header<String>(new TextCell()){@Overridepublic String getValue() {return text;}};return head;}private void addColumnSortAsyncHandling() {columnName.setSortable(true);// columnTitle.setSortable(true);// columnDate.setSortable(true);ColumnSortEvent.AsyncHandler columnSortHandler =new ColumnSortEvent.AsyncHandler(this.dataGridSearchResults);this.dataGridSearchResults.addColumnSortHandler(columnSortHandler);}private void createAsyncDataProvider() {this.searchResultsAsyncDataProvider =new SearchResultsAsyncDataProvider(this.searchResultsPresenter.getSearchQuery(),this.searchResultsPresenter.getClientFactory());this.dataGridSearchResults.setVisibleRangeAndClearData(new Range(0,15), true);//this.dataGridSearchResults.setPageSize(15);this.simplePagerSearchResults.setDisplay(this.dataGridSearchResults);this.simplePagerSearchResults.startLoading();this.searchResultsAsyncDataProvider.addDataDisplay(this.dataGridSearchResults);//call presenter here to get estimation from db for update row countthis.searchResultsAsyncDataProvider.updateRowCount(55, true);this.labelInformation.setText("Search results for : \""+this.searchResultsPresenter.getSearchQuery()+"\"");//addColumnSortAsyncHandling();}@Overridepublic void reset() {this.createAsyncDataProvider();}@Overridepublic void setSearchResultsPresenter(SearchResultsPresenter searchResultsPresenter) {this.searchResultsPresenter = searchResultsPresenter;}}---------------------------------------------------------------------------------------------------------------------------------------------------public class SearchResultsActivity extends AbstractActivity implements SearchResultsPresenter{// Used to obtain views, eventBus, placeControllerprivate final ClientFactory clientFactory;private SearchResultsView searchResultsView = null;private SearchResultsPlace searchResultsPlace = null;public SearchResultsActivity(SearchResultsPlace searchResultsPlace, final ClientFactory clientFactory){this.clientFactory = clientFactory;this.searchResultsPlace = searchResultsPlace;}@Overridepublic void start(AcceptsOneWidget panel, EventBus eventBus) {//reset view here . clear adapter set new keyword etc...this.searchResultsView = this.clientFactory.getSearchResultsView(this);this.searchResultsView.reset();panel.setWidget(this.searchResultsView.asWidget());}@Overridepublic void goTo(Place place) {this.clientFactory.getPlaceController().goTo(place);}@Overridepublic ClientFactory getClientFactory() {return this.clientFactory;}@Overridepublic String getSearchQuery() {return this.searchResultsPlace.getValue();}}--------------------------------------------------------------------------------------------------------------------------------
You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at http://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.
You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at http://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.
No comments:
Post a Comment