Вход ExtGWT StoreFilterField не реагирует - PullRequest
0 голосов
/ 24 марта 2012

Я пытаюсь построить грид со встроенной фильтрацией столбцов (используя 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, чтобы проверить, была ли вызвана эта функция, но это не так. Любая идея будет приветствоваться. Спасибо.

Ответы [ 2 ]

0 голосов
/ 27 марта 2012

Я решаю эту проблему согласно этой статье http://www.sencha.com/forum/archive/index.php/… но я заменяю disableTextSelection(false) на setAllowTextSelection(true);

0 голосов
/ 26 марта 2012

Я смог заставить ваш код работать. Я заметил, что в коде класса 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.

Спасибо, Ганеш

...