user1016403
user1016403

Reputation: 12621

Add filters to LiveGrid?

I am using gxt's LiveGrid. I want to add filters. I have added below few lines but data is not filtered. Am I missing any thing here?

GridFilters filters = new GridFilters(); 
filters.setLocal(true); 

StringFilter nameFilter = new StringFilter("column name"); 
filters.addFilter(nameFilter); 

filters.init(liveGrid);
liveGrid.addPlugin(filters);

Upvotes: 2

Views: 1562

Answers (2)

swamy
swamy

Reputation: 1210

GridFilters filters = new GridFilters(); filters.setLocal(true);

StringFilter nameFilter = new StringFilter("column name"); filters.addFilter(nameFilter);

filters.init(liveGrid); liveGrid.addPlugin(filters);

If u want to get the data after filter applied u need to overide reload() method of AbstractGridFilters.

Upvotes: 0

jonasr
jonasr

Reputation: 1876

From the filter javadoc :

To add a filter to a Grid column, create an instance of a concrete subclass of Filter, passing to the constructor the ValueProvider for the column, then add the filter to a GridFilters

Your code sample seems too restrinct and should probably be parameterized. The StringFilter should be given a ValueProvider for the property of the model object you wish to filter. Following is a simple overview of how to create a Grid with Filters.

Let's say you have a class User

public class User implements Serializable {
    private String name;
    private Integer id;

    // Setters and getters
}

public interface UserProperties extends PropertyAccess<User> {
    @Path("id")
    ModelKeyProvider<User> key();

    ValueProvider<User, String> name();
}

To create a grid that will display your users, you would do as follow

private static final UserProperties props = GWT.create(UserProperties.class);
...

// Create column config
ColumnConfig<User, String> nameCol = new ColumnConfig<User, String>(props.name(), 200, "Name");

// Create column model
List<ColumnConfig<User, ?>> l = new ArrayList<ColumnConfig<User, ?>>();
l.add(nameCol);
ColumnModel<User> cm = new ColumnModel<User>(l);

// Create User store
ListStore<User> store = new ListStore<User>(props.key());

// Create your grid
final LiveGridView<User> liveGridView = new LiveGridView<User>();
liveGridView.setForceFit(true);

Grid<User> view = new Grid<User>(store, cm) {
  @Override
  protected void onAfterFirstAttach() {
    super.onAfterFirstAttach();
    // Get grid data
  }
};

// Create a String filter for the column
StringFilter<User> nameFilter = new StringFilter<User>(props.name());

// Create a GridFilters
GridFilters<User> filters = new GridFilters<User>();
filters.initPlugin(grid);
filters.setLocal(true);
filters.addFilter(nameFilter);

Upvotes: 2

Related Questions