在 SAPUI5 Fiori 模板应用程序中搜索工作列表不起作用
Search on worklist does not work in SAPUI5 Fiori Template Application
嗨,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"));
}
},
提前致谢。
var oFilter = new sap.ui.model.Filter(oTableSearchState, true);
oTable.getBinding("items").filter(oFilter, "Application");
我报告的问题也可能发生在其他人身上因此我回答了我的问题因为我找到了答案。
故事是当我使用 NorthWind OData 服务时,SAP WebIDE 的 Fiori Worklist 模板工作正常,我可以看到项目列表并搜索它们(过滤器)。
但是当我使用我们的内部 SAP ERP OData 服务时,我可以看到项目列表,但我无法过滤它们。
因此我认为问题与SAP有关,它无法更新视图。
但实际上,SAPUI5 每次过滤都会向 OData Server 发送一个新请求,而我认为过滤是在浏览器内部完成的。
因此,问题与忽略请求选项的 OData 服务实现有关。虽然我们必须在我们的 OData 服务中实现 OData 规范的全部功能。
我希望此信息对遇到此问题的其他人有用。
嗨,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"));
}
},
提前致谢。
var oFilter = new sap.ui.model.Filter(oTableSearchState, true);
oTable.getBinding("items").filter(oFilter, "Application");
我报告的问题也可能发生在其他人身上因此我回答了我的问题因为我找到了答案。
故事是当我使用 NorthWind OData 服务时,SAP WebIDE 的 Fiori Worklist 模板工作正常,我可以看到项目列表并搜索它们(过滤器)。
但是当我使用我们的内部 SAP ERP OData 服务时,我可以看到项目列表,但我无法过滤它们。
因此我认为问题与SAP有关,它无法更新视图。
但实际上,SAPUI5 每次过滤都会向 OData Server 发送一个新请求,而我认为过滤是在浏览器内部完成的。
因此,问题与忽略请求选项的 OData 服务实现有关。虽然我们必须在我们的 OData 服务中实现 OData 规范的全部功能。
我希望此信息对遇到此问题的其他人有用。