<fb:FilterBar reset="onReset" search="onSearch">
<fb:filterItems>
<fb:FilterItem name="dateRange" label="Date Range" mandatory="true">
<fb:control>
<DateRangeSelection id="dateRange" />
</fb:control>
</fb:FilterItem>
</fb:filterItems>
</fb:FilterBar>
在我的onSearch方法中,我获得了绑定,然后使用它来设置表的过滤器:
onSearch : function(oEvt) {
var oFilterBar = oEvt.getSource(), aFilters = [], oParameters;
aFilters = oFilterBar.getFilters();
oParameters = oFilterBar.getParameters();
this.doReload(aFilters, oParameters);
}
这里的第一个问题是我在调用oFilterBar.getFilters()时得到'undefined is not function'。 oFilterBar本身并不是未定义的,所以一见钟情就好了。我的观点包括xmlns:fb="sap.ui.comp.filterbar"
。
doReload : function(aFilters, oParameters) {
var oTable = this.byId("clockHistoryTable");
var oBinding = oTable.getBinding("items");
oBinding.filter(aFilters);
}
我很难连接两者,并弄清楚如何使用所选范围作为过滤器。我的表格模型有一个项目列表,每个项目都有一个名为“日期”的字段,可用于根据所选范围过滤项目。但是这个字段有自己特定的日期格式yyyymmdd。
附带问题,设置DateRangeSelection控件的默认日期和日期的最佳方法是在控制器的init函数中?
更新
艾伦的回应之后我做了一些修改:
doReload : function(aFilters) {
var oTable = this.byId("clockHistoryTable");
var oBinding = oTable.getBinding("items");
oBinding.filter(aFilters);
},
onReset : function(oEvent) {
this.doReload();
},
onSearch : function(oEvt) {
var oFilterBar = oEvt.getSource(), aFilters = [];
aFilters = oEvt.getParameter("selectionSet");
this.doReload(aFilters);
},
它运行时没有任何错误,但是当我选择一个日期或范围时,它会过滤掉所有内容并且表格为空。
答案 0 :(得分:1)
getFilters
没有名为FilterBar
的方法,仅适用于SmartFilterBar
。您需要根据oEvent.getParameter("selectionSet")
构建自己的过滤器。
您也应设置displayFormat="yyyy/MM/dd"
DateRangeSelection
。
是的,您应该在DateRangeSelection
功能中设置onInit()
的默认日期。