Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

GridApplyFilterWhenScrolledDown.java 2.0KB

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