You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

GridApplyFilterWhenScrolledDown.java 2.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package com.vaadin.v7.tests.components.grid;
  2. import com.vaadin.server.VaadinRequest;
  3. import com.vaadin.ui.UI;
  4. import com.vaadin.ui.themes.ValoTheme;
  5. import com.vaadin.v7.data.Container.Filterable;
  6. import com.vaadin.v7.data.Item;
  7. import com.vaadin.v7.data.util.filter.SimpleStringFilter;
  8. import com.vaadin.v7.event.FieldEvents.TextChangeEvent;
  9. import com.vaadin.v7.event.FieldEvents.TextChangeListener;
  10. import com.vaadin.v7.ui.Grid;
  11. import com.vaadin.v7.ui.Grid.HeaderRow;
  12. import com.vaadin.v7.ui.TextField;
  13. public class GridApplyFilterWhenScrolledDown extends UI {
  14. private Grid grid = new Grid();
  15. @Override
  16. protected void init(VaadinRequest vaadinRequest) {
  17. grid.addColumn("Name", String.class);
  18. HeaderRow appendHeaderRow = grid.appendHeaderRow();
  19. TextField filter = getColumnFilter("Name");
  20. appendHeaderRow.getCell("Name").setComponent(filter);
  21. for (int i = 0; i < 1000; i++) {
  22. Item addItem = grid.getContainerDataSource().addItem(i);
  23. addItem.getItemProperty("Name").setValue("Name " + i);
  24. }
  25. Item addItem = grid.getContainerDataSource().addItem(1000);
  26. addItem.getItemProperty("Name").setValue("Test");
  27. // grid.scrollToStart();
  28. setContent(grid);
  29. }
  30. private TextField getColumnFilter(final Object columnId) {
  31. TextField filter = new TextField();
  32. filter.setWidth("100%");
  33. filter.addStyleName(ValoTheme.TEXTFIELD_TINY);
  34. filter.addTextChangeListener(new TextChangeListener() {
  35. SimpleStringFilter filter = null;
  36. @Override
  37. public void textChange(TextChangeEvent event) {
  38. Filterable f = (Filterable) grid.getContainerDataSource();
  39. if (filter != null) {
  40. f.removeContainerFilter(filter);
  41. }
  42. filter = new SimpleStringFilter(columnId, event.getText(), true,
  43. true);
  44. f.addContainerFilter(filter);
  45. }
  46. });
  47. return filter;
  48. }
  49. }