Odata Fiori元素-自定义$batch查询
我有使用Fiori元素的Fiori应用程序,我想调整UI5在Odata Fiori元素-自定义$batch查询,odata,sapui5,sap-fiori,Odata,Sapui5,Sap Fiori,我有使用Fiori元素的Fiori应用程序,我想调整UI5在$batch调用中为odata生成的odata查询 我已经为列表报告打开了livemode,同时使用smartfilter进行选择/筛选,并使用ValueList注释列出值。但问题是,当我在选择字段(比如销售对象)中键入筛选值时,$batch调用会触发下面的OData查询 ../invoice_list.xsodata/vlsoldto?sap-client=100&$skip=0&$top=10&$filter
$batch
调用中为odata生成的odata查询
我已经为列表报告打开了livemode,同时使用smartfilter进行选择/筛选,并使用ValueList注释列出值。但问题是,当我在选择字段(比如销售对象)中键入筛选值时,$batch
调用会触发下面的OData查询
../invoice_list.xsodata/vlsoldto?sap-client=100&$skip=0&$top=10&$filter=startswith(SOLDTO___T,%27TEST%27)
我想调整odata调用,使用“substringof”而不是“startswith”。。下面是这样的
../invoice_list.xsodata/vlsoldto?sap-client=100&$skip=0&$top=10&$filter=substringof(%27TEST%27,CRM_SOLDTO___T)
我不知道在哪里可以进行定制。我知道如何进行Fiori元素扩展,但是如果它是一个扩展,那么寻找一些信息,然后是哪种类型的扩展,哪种事件,或者任何其他方法,如果不是扩展。我不知道从哪里开始
非常感谢您的帮助。您可以在SmartFilterBar中添加自己的字段,然后创建自己的自定义筛选器:
编辑:如果要使用现有字段,只需在事件上使用sap.ui.model.FilterOperator.Contains
推送一个新筛选器即可
步骤1:在manifest.json文件中注册扩展名
"extends": {
"extensions": {
...
"sap.ui.controllerExtensions": {
...
"sap.suite.ui.generic.template.ListReport.view.Details": {
...
"controllerName": "com.acme.app.controller.ListReportExtension",
...
}
}
...
步骤2:实现控制器方法:
sap.ui.controller("com.acme.app.controller.ListReportExtension", {
onBeforeRebindTableExtension: function(oEvent) {
var oBindingParams = oEvent.getParameter("bindingParams");
oBindingParams.parameters = oBindingParams.parameters || {};
var oSmartTable = oEvent.getSource();
var oSmartFilterBar = this.byId(oSmartTable.getSmartFilterId());
var vCategory;
if (oSmartFilterBar instanceof sap.ui.comp.smartfilterbar.SmartFilterBar) {
//Custom price filter
var oCustomControl = oSmartFilterBar.getControlByKey("CustomPriceFilter");
if (oCustomControl instanceof sap.m.ComboBox) {
vCategory = oCustomControl.getSelectedKey();
switch (vCategory) {
case "0":
oBindingParams.filters.push(new sap.ui.model.Filter("Price", "LE", "100"));
break;
case "1":
oBindingParams.filters.push(new sap.ui.model.Filter("Price", "GT", "100"));
break;
default:
break;
}
}
}
}
});
我想邹是在谈论组合框吧?请参阅此处的“过滤选项列表”:我的是多输入。但是当我像下面那样添加setFilterFunction时,它不会将过滤器更改为contains(而不是startsWith)**********************************************************************************************************************************************omMultiInput.setFilterFunction(函数(sTerm,oItem){//不区分大小写的“string contains”过滤器返回oItem.getText().match);