2015-07-17 5 views
0

Я использую SmartGWT listgrid с источником данных, и обычно моя фильтрация запускает запрос сервера, однако иногда сетка пытается фильтровать данные локально, а затем данные не отображаются. К сожалению, я не могу сказать, что вызывает локальную фильтрацию.smartgwt отключить фильтрацию клиента в сетке

Я начал отладку кода JavaScript SmartClient и выяснил, что метод isc_ResultSet__willFetchData из модуля ISC_DataBinding иногда возвращает false, даже если критерии фильтрации изменены. Я хочу, чтобы этот метод всегда возвращал true при изменении критериев фильтрации. Это очень трудно для отладки SmartClient, потому что это затемненный :(

Как я могу заставить listgrid всегда отправить запрос на сервер при фильтрации критериев изменяется

Список Сетка confuguration:

grid.setShowRecordComponents(true); 
grid.setShowRecordComponentsByCell(true); 
grid.setWidth100(); 
grid.setHeight100(); 
grid.setShowAllRecords(false); 
grid.setCellHeight(22); 
grid.setAutoFetchData(false); 
grid.setCanEdit(true); 
grid.setAutoSaveEdits(false); 
grid.setShowFilterEditor(true); 
Button filterButtonProperties = new Button(); 
filterButtonProperties.setVisible(false); 
grid.setFilterButtonProperties(filterButtonProperties); 
grid.setAllowFilterExpressions(true); 
grid.setFilterEditorHeight(22); 
grid.setDataPageSize(30); 
grid.setRowEndEditAction(RowEndEditAction.DONE); 
grid.setListEndEditAction(RowEndEditAction.NEXT); 
grid.setConfirmDiscardEdits(false); 
grid.setUseAdvancedFieldPicker(true); 
grid.setAdvancedFieldPickerThreshold(0); 
grid.setFieldPickerFieldProperties(new String[] { "frozen", "decimalPrecision" }); 
grid.setAutoFitFieldsFillViewport(true); 
grid.setCanHover(true); 
grid.setShowHover(true); 
grid.setShowClippedValuesOnHover(true); 
grid.setDateFormatter(DateDisplayFormat.TOEUROPEANSHORTDATE); 
grid.setDateInputFormat("DMY"); 
ResultSet resultSetProperties = new ResultSet(); 
resultSetProperties.setNeverDropUpdatedRows(true); 
grid.setDataProperties(resultSetProperties); 
grid.setSelectionType(SelectionStyle.SIMPLE); 
grid.set gridComponents(new Object[] { List gridComponent.FILTER_EDITOR, List gridComponent.HEADER, 
    List gridComponent.BODY }); 

ответ

1

Я нашел это, я понял, что происходит под капотом, заменив запущенный код версией для отладки, которая доступна в этом месте: SMARTGWT \ com \ smartclient \ debug \ public \ sc \ Я должен сказать, что это очень полезно Мне пришлось отключить фильтрацию на стороне клиента, поскольку она отличается от фильтрации на стороне сервера. то, как это можно сделать:

ResultSet resultSetProperties = new ResultSet(); 
resultSetProperties.setUseClientFiltering(false); 
grid.setDataProperties(resultSetProperties); 

Один день работы и 3 строки кода :) Надеюсь, что это поможет кому-то сэкономить время :)