smartgwt 禁用网格中的客户端过滤
smartgwt disable client filtering in grid
我将 SmartGWT listgrid 与数据源一起使用,通常我的过滤会触发服务器请求,但有时网格会尝试在本地过滤数据,然后没有显示任何数据。不幸的是,我无法说出是什么导致了本地过滤。
我开始调试 SmartClient JavaScript 代码并找到了那个方法
ISC_DataBinding 模块 ISC_DataBinding 中的 isc_ResultSet__willFetchData 有时 returning false 即使更改了过滤条件。我希望此方法在更改过滤条件时始终 return 为真。调试 SmartClient 非常困难,因为它被混淆了:(
如何在过滤条件更改时强制 listgrid 始终向服务器发送请求?
列表网格配置:
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 });
找到了!通过将混淆代码替换为可在以下位置进行调试的版本,我想弄清楚幕后发生了什么:SMARTGWT\com\smartclient\debug\public\sc\ 我必须说它非常有用。
我不得不禁用客户端过滤,因为它不同于服务器端过滤。这是如何完成的:
ResultSet resultSetProperties = new ResultSet();
resultSetProperties.setUseClientFiltering(false);
grid.setDataProperties(resultSetProperties);
一天的工作和 3 行代码 :) 希望它能帮助别人节省一些时间 :)
我将 SmartGWT listgrid 与数据源一起使用,通常我的过滤会触发服务器请求,但有时网格会尝试在本地过滤数据,然后没有显示任何数据。不幸的是,我无法说出是什么导致了本地过滤。
我开始调试 SmartClient JavaScript 代码并找到了那个方法 ISC_DataBinding 模块 ISC_DataBinding 中的 isc_ResultSet__willFetchData 有时 returning false 即使更改了过滤条件。我希望此方法在更改过滤条件时始终 return 为真。调试 SmartClient 非常困难,因为它被混淆了:(
如何在过滤条件更改时强制 listgrid 始终向服务器发送请求?
列表网格配置:
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 });
找到了!通过将混淆代码替换为可在以下位置进行调试的版本,我想弄清楚幕后发生了什么:SMARTGWT\com\smartclient\debug\public\sc\ 我必须说它非常有用。 我不得不禁用客户端过滤,因为它不同于服务器端过滤。这是如何完成的:
ResultSet resultSetProperties = new ResultSet();
resultSetProperties.setUseClientFiltering(false);
grid.setDataProperties(resultSetProperties);
一天的工作和 3 行代码 :) 希望它能帮助别人节省一些时间 :)