ExtGWT StoreFilterField输入没有反应

时间:2012-03-24 11:24:11

标签: java extjs gxt

我正在尝试使用内置列过滤(使用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来检查是否调用了这个函数,但事实并非如此。 任何想法都会受到欢迎。感谢。

2 个答案:

答案 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);