2015-04-17 2 views
2

Я пытаюсь переопределить поведение StringFilter, используемое Grid. Код ниже не имеет некоторых функций, я просто хочу узнать, вызывается ли validateModel. Дело в том, что это никогда не называется. С другой стороны, onFieldKeyUp вызывается как следует. Что я делаю не так?StringFilter override not working

Я использую Sencha GXT 3.1.0, GWT 2.6.1, Java 1.7

Filter<Record, ?> filter = new StringFilter<Record>(valueProvider) 
{ 
    @Override 
    protected void onFieldKeyUp(Event event) 
    { 
     Window.alert("onFieldKeyUp"); //--> This is called 
     int key = event.getKeyCode(); 
     if (key == KeyCodes.KEY_ENTER && field.isValid()) 
     { 
      event.stopPropagation(); 
      event.preventDefault(); 
      menu.hide(true); 

      return; 
     } 

     super.onFieldKeyUp(event); 
    } 

    @Override 
    protected boolean validateModel(Record model) 
    { 
     Window.alert("validateModel"); //--> This is NOT called 
     String rowValue = getValueProvider().getValue(model); 
     rowValue = (rowValue == null) ? "" : rowValue; 
     Object filterObject = getValue(); 
     String filterValue = filterObject == null ? "" : String.valueOf(filterObject); 

     if (filterValue.isEmpty() && rowValue.isEmpty()) 
     { 
      return true; 
     } 
     else 
     { 
      //Here I want to put some more code manipulating the filtevalue 
      return rowValue.toLowerCase().indexOf(filterValue.toLowerCase()) > -1; 
     } 
    } 
};  

ответ

2

ли вы положили filters.setLocal(true); и filters.initPlugin(grid);?

Вот код, я попробовал и работал:

GridFilters<MyRow> filters = new GridFilters<MyRow>(); 

filters.initPlugin(grid); 

StringFilter<MyRow> filter = new StringFilter<MyRow>(nameValueProvider) { 
    @Override 
    protected boolean validateModel(MyRow model) { 
    Window.alert("Hello"); 
    return super.validateModel(model); 
    } 
}; 

filters.addFilter(filter); 
filters.setLocal(true); 
+0

SETLOCAL (правда) сделал это для меня. Спасибо, мил. Приобретен и принят. – alkis