SAPUI5: No options to create dynamic filters in XML views?
Solution 1
Obviously Allen's answer is the correct way to go long term, but meanwhile I used the following work around in my controller:
onInit: function() {
this._oView = this.getView();
// ... any other init stuff ...
this._oView.attachAfterRendering(function() {
var sValue1 = "filter val";
var sPath = "fieldName";
var sOperator = "EQ";
var oBinding = this.byId("catalogTable").getBinding("items");
oBinding.filter([new sap.ui.model.Filter(sPath, sOperator, sValue1)]);
});
}
Only one call is made to the service (it doesn't load the data and then reload which I feared it might).
Solution 2
The list binding does not support defining dynamic Filter value as a binding path. For details,please check my answer for this question. Also see the reported git issue at here.
jao6693
Updated on June 12, 2022Comments
-
jao6693 almost 2 years
I am binding an OData model to the items of a list and try to apply a filter dynamically using the following syntax in an XML view:
<List id="supplierList" items="{ path : '/SupplierCollection', filters : { path : 'CompCode', operator : 'EQ', value1: { path : 'general>/companyCode' } } }"
The "general" model used here has been defined in the Component.js and is also referenced in the controller of the view:
onInit : function() { ... var generalModel = sap.ui.getCore().getModel("general"); this.getView().setModel(generalModel, "general"); ... }
Unfortunately, the model doesn't seem to be parsed and the path is not interpreted correctly at runtime. But if I hard-code the value1 then the filter works properly.
Any idea on this issue?
Is it me using a wrong path to set the value1 of the filter? Or is it a bug?