从filter的javadoc:
要将过滤器添加到网格列,创建过滤器的具体子类的实例,传递给构造函数的ValueProvider为列,然后添加过滤到GridFilters
您的代码示例似乎过于重复,应该可能参数化。应该给StringFilter一个ValueProvider,用于你想要过滤的模型对象的属性。以下是如何使用过滤器创建网格的简单概述。
假设你有一个类用户
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();
}
要创建一个网格,将显示你的用户,你会做如下
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);
好吧。 +1 :) –
嗨感谢您的详细回复。我的代码在正常的网格中运行良好。如果我尝试使用活动网格,那么它不是过滤。您的代码是否适用于实时网格?谢谢! – user1016403