gxt 2.3 Сетчатый фильтр не работает

Мой фильтр не перезагружает сетку, но «Сортировка по возрастанию», «Сортировка по убыванию» и «Столбцы» работают хорошо. Я использовал это руководство, но фильтр из этой демонстрации тоже не работает: http://www.sencha.com/examples-2/#filtergrid

Мой код в onModuleLoad():

    configs = new ArrayList<ColumnConfig>();
    column = new ColumnConfig("id", "Id", 20);  
    column.setAlignment(HorizontalAlignment.LEFT);    
    configs.add(column); 

    column = new ColumnConfig("name", "Név", 50);  
    column.setAlignment(HorizontalAlignment.LEFT);          
    configs.add(column);                    

    column = new ColumnConfig("address", "Cím", 100);  
    column.setAlignment(HorizontalAlignment.LEFT);  
    configs.add(column);

    column = new ColumnConfig("email", "Első email", 100);  
    column.setAlignment(HorizontalAlignment.LEFT);  
    configs.add(column); 

    column = new ColumnConfig("startDate", "Feltöltés", 100);  
    column.setAlignment(HorizontalAlignment.LEFT); 
    configs.add(column);  

    column = new ColumnConfig("changeDate", "Módosítás", 100);  
    column.setAlignment(HorizontalAlignment.LEFT); 
    configs.add(column);  

cm = new ColumnModel(configs);  

    idFilter = new NumericFilter("id"); 
    nameFilter = new StringFilter("name");      
    addressFilter = new StringFilter("address"); 
    emailFilter = new StringFilter("email");  
    startDateFilter = new DateFilter("startDate");
    changeDateFilter = new DateFilter("changeDate");

usersListGridFilter=new GridFilters();
    usersListGridFilter.setLocal(true);
    usersListGridFilter.clearFilters();
    usersListGridFilter.addFilter(idFilter);
    usersListGridFilter.addFilter(nameFilter);
    usersListGridFilter.addFilter(addressFilter);
    usersListGridFilter.addFilter(emailFilter);
    usersListGridFilter.addFilter(startDateFilter);
    usersListGridFilter.addFilter(changeDateFilter);
    usersListGridFilter.setAutoReload(true);
    usersListGridFilter.setUpdateBuffer(100);

usersClientList= new ListStore<UserClient>();
    usersList.add(ClientTestUsers.getUsers());

usersClientListGrid=new Grid<UserClient>(usersClientList, cm);
    usersClientListGrid.setStyleAttribute("borderTop", "none");  
    usersClientListGrid.setAutoExpandColumn("name");  
    usersClientListGrid.setBorders(true);  
    usersClientListGrid.setStripeRows(true);  
    usersClientListGrid.getView().setForceFit(true);  
    usersClientListGrid.setColumnLines(true);  
    usersClientListGrid.addPlugin(usersListGridFilter);
    usersClientListGrid.setLoadMask(true);

cp = new ContentPanel();    
    cp.setBodyBorder(true);  
    cp.setHeadingText("Users");
    cp.setButtonAlign(HorizontalAlignment.CENTER);    
    cp.setLayout(new FitLayout());    
    cp.setSize(800, 300);   
    cp.add(usersClientListGrid); 

usersListFormPanel = new FormPanel();
    usersListFormPanel.add(usersListHorizontalPanel);
    usersListFormPanel.add(cp);
    usersListFormPanel.setWidth(820);

RootPanel.get("startWindowDiv").add(usersListFormPanel);

person user2546574    schedule 03.07.2013    source источник
comment
stackoverflow.com/a/13966581/1211000   -  person swamy    schedule 10.07.2013


Ответы (1)


У меня такая же проблема.

Я исправляю com.extjs.gxt.ui.client.widget.grid.filters.AbstractGridFilters.

Я заменяю:

  protected StoreFilter<ModelData> getModelFilter() {
    StoreFilter<ModelData> storeFilter = new StoreFilter<ModelData>() {
      public boolean select(Store<ModelData> store, ModelData parent, ModelData item, String property) {
        for (Filter filter : filters.values()) {
          if (filter.isActivatable() && filter.isActive() && !filter.validateModel(item)) {
            return false;
          }
        }
        return true;
      }
    };
    for (Filter filter : filters.values()) {
      if (!filter.isActivatable() || !filter.isActive()) {
        return null;
      }
    }
    return storeFilter;
  }

By

protected StoreFilter<ModelData> getModelFilter() {
    StoreFilter<ModelData> storeFilter = new StoreFilter<ModelData>() {
        public boolean select(Store<ModelData> store, ModelData parent, ModelData item, String property) {
            for (Filter filter : filters.values()) {
                if (filter.isActivatable() && filter.isActive() && !filter.validateModel(item)) {
                    return false;
                }
            }
            return true;
        }
    };

return storeFilter;
}
person tcouery    schedule 15.09.2013