You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 18:24:30