Sapui5 将自定义筛选器传递到SmartTable

Sapui5 将自定义筛选器传递到SmartTable,sapui5,sap-fiori,Sapui5,Sap Fiori,我在智能过滤条上创建了一个自定义控件。我不确定如何将选择传递给服务器,以便服务器更新过滤器并将数据重新绑定到智能表。以下是自定义smartfilter栏: <smartFilterBar:ControlConfiguration groupId="_BASIC" key="ZQ_STAT" visibleInAdvancedArea="true" preventInitialDataFetchInValueHelpDialog="false" > <smartFilterBar

我在智能过滤条上创建了一个自定义控件。我不确定如何将选择传递给服务器,以便服务器更新过滤器并将数据重新绑定到智能表。以下是自定义smartfilter栏:

<smartFilterBar:ControlConfiguration groupId="_BASIC" key="ZQ_STAT" visibleInAdvancedArea="true" preventInitialDataFetchInValueHelpDialog="false" >
<smartFilterBar:customControl>
 <Select id="qualStatusDropDown" change="onQualSearch">
    <core:Item key="" text=" " />
    <core:Item key="0" text="0" />
    <core:Item key="1" text="ONE" />
    <core:Item key="2" text="TWO" />
    <core:Item key="3" text="THREE" />
</Select>
</smartFilterBar:customControl>
我在标准表和搜索字段上使用了这段代码,但控制台中出现了一个错误,指出“getBinding”未定义。如果我将“oTable”对象输出到控制台,我可以看到“items”聚合确实存在,尽管我认为可能我没有调用正确的聚合。我花了一些时间试图确定如何获得当前的表绑定,尽管它总是空的。我在表上使用'enableAutoBinding=true',当我禁用它并将该属性输出到控制台时,即使在应用了过滤器搜索之后,它仍然始终为空

当我使用其他可用字段之一(仅为标准smartfilter)时,我可以看到network选项卡中的oData调用修改查询并将“filter”添加到查询中。这:

/Employees?$skip=0&$top=20&$select=Pernr,STEXT_2,Butxt,STLTX,ZQ_STAT
与此(过滤器后):

我肯定我错过了一些简单的东西,或者我只是做错了。有人能帮我做下一步吗

编辑:我越来越接近这个了。查看此示例后:

我意识到绑定参数只存在于'beforeRebindTable'事件中。我将该事件添加到控件并更新脚本:

onQualSearch:函数(oEvent){
var oSmartTable=this.byId(“gSmartTable”);
oSmartTable.rebindTable();
//oSmartTable.showOverlay();
},
onBeforeRebindTable:函数(oEvent){
//获取bindinParams对象,其中包括筛选器
var oBindingParams=oEvent.getParameter(“bindingParams”);
//创建过滤器阵列
var aFilters=oBindingParams.filters;
//创建表对象
var oSmartTable=oEvent.getSource();
//获取SmartFilterBarID
var oSmartFilterBar=this.byId(oSmartTable.getSmartFilterId());
if(sap.ui.comp.smartfilterbar.smartfilterbar的oSmartFilterBar实例){
var oCustomControl=oSmartFilterBar.getControlByKey(“ZQ_STAT”);
if(sap.m.Select的oCustomControl实例){
var sQualStat=oCustomControl.getSelectedKey();
oBindingParams.filters.push(新的sap.ui.model.Filter(“ZQ_STAT”,“EQ”,sQualStat));
}
}

},
您使用的是带有智能控件的自由式应用程序,还是配置智能模板应用程序?感谢您的关注!这是一款带有智能控件的自由式应用程序。请参阅中属性“liveMode”的文档以及中相应的示例。在这个示例中,您有一个按钮“更改为‘LiveMode’”。从1点40分开始。也许这就是你想要的?谢谢你的回复!我们使用的是1.38,所以这个函数还不太可用(至少在我们部署到FLP时是不可用的)。下次我会记住这一点,谢谢!
/Employees?$skip=0&$top=20&$select=Pernr,STEXT_2,Butxt,STLTX,ZQ_STAT
/Employees?$skip=0&$top=20&$filter=(Butxt eq 'XXXXX')&$select=Pernr,STEXT_2,Butxt,STLTX,ZQ_STAT