SAPUI5开发人员,
我在WebIDE中创建了一个Firori Worklist项目。我将它连接到OData服务器并默认选择SAPUI版本1.38。
它正确显示工作清单,我可以按下项目并在视图之间移动并特别访问该对象。
所以一切似乎都运转正常。
唯一不起作用的是搜索框。每当我在里面键入内容并按回车键时,它的事件就被触发,但它不会过滤任何内容。
调用的函数如下:
onSearch: function(oEvent) {
if (oEvent.getParameters().refreshButtonPressed) {
// Search field's 'refresh' button has been pressed.
// This is visible if you select any master list item.
// In this case no new search is triggered, we only
// refresh the list binding.
this.onRefresh();
} else {
var oTableSearchState = [];
var sQuery = oEvent.getParameter("query");
if (sQuery && sQuery.length > 0) {
oTableSearchState = [new Filter("ZBrandName", FilterOperator.Contains, sQuery)];
}
this._applySearch(oTableSearchState);
}
},
/**
* Internal helper method to apply both filter and search state together on the list binding
* @param {object} oTableSearchState an array of filters for the search
* @private
*/
_applySearch: function(oTableSearchState) {
var oTable = this.byId("table"),
oViewModel = this.getModel("worklistView");
console.log(oTable);
oTable.getBinding("items").filter(oTableSearchState, "Application");
// changes the noDataText of the list in case there are no filter results
if (oTableSearchState.length !== 0) {
oViewModel.setProperty("/tableNoDataText", this.getResourceBundle().getText("worklistNoDataWithSearchText"));
}
},
提前致谢。
答案 0 :(得分:0)
var oFilter = new sap.ui.model.Filter(oTableSearchState, true);
oTable.getBinding("items").filter(oFilter, "Application");
答案 1 :(得分:0)
我报告的问题也可能发生在其他人身上,因此我回答了我的问题,因为我找到了答案。
故事是,当我使用NorthWind OData服务时,SAP WebIDE的Fiori Worklist模板工作正常,我可以看到一个项目列表并搜索它们(过滤器)。
但是当我使用内部SAP ERP OData服务时,我可以看到项目列表,但我无法过滤它们。
因此,我认为问题与SAP有关,无法更新视图。
但实际上,SAPUI5会向OData Server发送一个新请求以进行每次过滤,而我认为过滤是在浏览器内完成的。
因此,问题与忽略请求选项的OData Service实现有关。虽然我们必须在OData服务中实现OData规范的全部功能。
我希望此信息适用于遇到此问题的其他人。