SAPUI5中清除Smart Filter后无需点击Go按钮刷新Smart Table的方法
自定义Smart Filter Bar清除按钮实现自动刷新表格
默认情况下,Smart Filter Bar点击清除按钮后需要手动点击Go按钮才会刷新表格,我们可以通过监听清除事件来自动触发表格刷新,具体实现步骤如下:
步骤1:给SmartFilterBar绑定clear事件
在XML视图的SmartFilterBar控件上添加clear事件绑定,修改后的代码如下:
<smartFilterBar:SmartFilterBar id="smartFilterBar" entitySet="XxxxX" enableBasicSearch="true" basicSearchFieldName="XxxxX1, XxxxX2, XxxxX3" useDateRangeType="true" showClearOnFB="true" clear="onFilterClear"> <!-- 新增clear事件绑定 --> <smartFilterBar:controlConfiguration> <smartFilterBar:ControlConfiguration key="XxxxX1" label="XxxxX1" visibleInAdvancedArea="true" visible="true" index="2"></smartFilterBar:ControlConfiguration> <smartFilterBar:ControlConfiguration key="XxxxX2" label="XxxxX2" visibleInAdvancedArea="true" visible="true" index="3"></smartFilterBar:ControlConfiguration> <smartFilterBar:ControlConfiguration key="XxxxX3" label="XxxxX3" visibleInAdvancedArea="true" visible="true" index="6"></smartFilterBar:ControlConfiguration> </smartFilterBar:controlConfiguration> </smartFilterBar:SmartFilterBar> <smartTable:SmartTable id="smartTable" entitySet="XxxxX" smartFilterId="smartFilterBar" tableType="ResponsiveTable" useExportToExcel="true" beforeExport="onBeforeExport" useVariantManagement="true" useTablePersonalisation="true" persistencyKey="SmartTableAnalytical_Explored" enableAutoBinding="true" class="sapUiResponsiveContentPadding tablehdr" beforeRebindTable='onBeforeRebindTable' afterVariantInitialise="onVariantLoad"> <ui:Table enableBusyIndicator="true" threshold="200" class=" smartTableHeader" id="customTable" cellClick="onCellPress"> </ui:Table> </smartTable:SmartTable>
步骤2:在控制器中实现事件处理函数
在控制器里添加onFilterClear方法,通过两种方式实现自动刷新:
方式一(推荐):调用SmartFilterBar的search方法
该方式等同于手动点击Go按钮,完全遵循SAPUI5框架逻辑,自动处理筛选条件重置与表格绑定更新:
onFilterClear: function(oEvent) { const oSmartFilterBar = this.getView().byId("smartFilterBar"); // 触发搜索动作,自动刷新表格 oSmartFilterBar.search(); }
方式二:直接刷新表格绑定
如果需要更精细的控制,可以直接获取表格的绑定对象并刷新:
onFilterClear: function(oEvent) { const oSmartTable = this.getView().byId("smartTable"); const oTable = oSmartTable.getTable(); const oBinding = oTable.getBinding("items"); if (oBinding) { // 直接刷新表格数据绑定 oBinding.refresh(); } }
注意事项
- 确保SmartTable已通过
smartFilterId属性正确关联SmartFilterBar,这样调用search()方法才能正确传递重置后的筛选条件。 - 优先使用方式一,避免手动处理绑定逻辑可能带来的异常。
内容的提问来源于stack exchange,提问作者aharr22
相关产品推荐
相关产品推荐

