我正在尝试使用内置列过滤(使用sencha gxt)构建网格,这是我的代码:
public Grid<Stock> createGrid() {
// Columns definition
ColumnConfig<Stock, String> nameCol = new ColumnConfig<Stock, String>(props.name(), 100, "Company");
// Column model definition and creation
List<ColumnConfig<Stock, ?>> cl = new ArrayList<ColumnConfig<Stock, ?>>();
cl.add(nameCol);
ColumnModel<Stock> cm = new ColumnModel<Stock>(cl);
// Data populating
ListStore<Stock> store = new ListStore<Stock>(props.key());
store.addAll(TestData.getStocks());
// Grid creation with data
final Grid<Stock> grid = new Grid<Stock>(store, cm);
grid.getView().setAutoExpandColumn(nameCol);
grid.setBorders(false);
grid.getView().setStripeRows(true);
grid.getView().setColumnLines(true);
// Filters definition
StoreFilterField<Stock> filter = new StoreFilterField<Stock>() {
@Override
protected boolean doSelect(Store<Stock> store, Stock parent, Stock item, String filter) {
// Window.alert(String.valueOf("a"));
String name = item.getName();
name = name.toLowerCase();
if (name.startsWith(filter.toLowerCase())) {
return true;
}
return false;
}
};
filter.bind(store);
cm.addHeaderGroup(0, 0, new HeaderGroupConfig(filter, 1, 1));
filter.focus();
return grid;
}
我的问题是:在运行此代码后,我无法编写任何内容来过滤输入,我正在使用此示例中的测试数据和类(Stock.java和StockProperties.java):http://sencha.com/examples-dev/#ExamplePlace:filtergrid 我尝试在doSelect方法中使用allert来检查是否调用了这个函数,但事实并非如此。 任何想法都会受到欢迎。感谢。
答案 0 :(得分:0)
我能够使你的代码工作。我发现StoreFilterField类的代码中存在编译器错误。以下是根据第一列中的值过滤网格的代码,即Stock模型中的名称字段。
StoreFilterField<Stock> filter1 = new StoreFilterField<Stock>() {
@Override
protected boolean doSelect(Store<Stock> store, Stock parent, Stock record, String property, String filter) {
String name = record.get("name");
name = name.toLowerCase();
if (name.startsWith(filter.toLowerCase())) {
return true;
}
return false;
}
};
filter1.bind(store);
顺便说一句,我用GXT 2.2.5和GWT 2.4进行了测试。
谢谢, 内甚
答案 1 :(得分:0)
我根据本文http://www.sencha.com/forum/archive/index.php/解决了这个问题...但我将disableTextSelection(false)
替换为setAllowTextSelection(true);