package com.vaadin.v7.tests.components.grid; import com.vaadin.server.VaadinRequest; import com.vaadin.ui.UI; import com.vaadin.ui.themes.ValoTheme; import com.vaadin.v7.data.Container.Filterable; import com.vaadin.v7.data.Item; import com.vaadin.v7.data.util.filter.SimpleStringFilter; import com.vaadin.v7.event.FieldEvents.TextChangeEvent; import com.vaadin.v7.event.FieldEvents.TextChangeListener; import com.vaadin.v7.ui.Grid; import com.vaadin.v7.ui.Grid.HeaderRow; import com.vaadin.v7.ui.TextField; public class GridApplyFilterWhenScrolledDown extends UI { private Grid grid = new Grid(); @Override protected void init(VaadinRequest vaadinRequest) { grid.addColumn("Name", String.class); HeaderRow appendHeaderRow = grid.appendHeaderRow(); TextField filter = getColumnFilter("Name"); appendHeaderRow.getCell("Name").setComponent(filter); for (int i = 0; i < 1000; i++) { Item addItem = grid.getContainerDataSource().addItem(i); addItem.getItemProperty("Name").setValue("Name " + i); } Item addItem = grid.getContainerDataSource().addItem(1000); addItem.getItemProperty("Name").setValue("Test"); // grid.scrollToStart(); setContent(grid); } private TextField getColumnFilter(final Object columnId) { TextField filter = new TextField(); filter.setWidth("100%"); filter.addStyleName(ValoTheme.TEXTFIELD_TINY); filter.addTextChangeListener(new TextChangeListener() { SimpleStringFilter filter = null; @Override public void textChange(TextChangeEvent event) { Filterable f = (Filterable) grid.getContainerDataSource(); if (filter != null) { f.removeContainerFilter(filter); } filter = new SimpleStringFilter(columnId, event.getText(), true, true); f.addContainerFilter(filter); } }); return filter; } }