Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SAPUI5: No options to create dynamic filters in XML views?

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?

like image 844
jao6693 Avatar asked Oct 14 '14 12:10

jao6693


2 Answers

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).

like image 109
lewis Avatar answered Oct 03 '22 08:10

lewis


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.

like image 27
Haojie Avatar answered Oct 03 '22 09:10

Haojie