Привязка списка / комбинированного списка данных SAPUI5 к таблице - PullRequest
0 голосов
/ 15 января 2020

Я должен заменить привязку данных из списка (выпадающий список) на таблицу. Важно, чтобы мы добавили фильтр для правильной привязки данных в выпадающем списке. oВход определяется как комбинированный список:

            oInput.setModel(oView.getModel());
            oInput.bindAggregation("items", "/shrhelpSet", oTemplete);

            oFilterObject = new sap.ui.model.Filter("object", "EQ", that.g_object);
            oFilterField = new sap.ui.model.Filter("field", "EQ",
                that.g_TechNameArr[i]);
            oFilterLang = new Filter("lang", "EQ", sCurrentLocale);
            oFilters = new sap.ui.model.Filter([oFilterObject, oFilterField, oFilterLang], true);

            oInput.getBinding("items").filter(oFilters);

Моя проблема заключается в том, как я могу заменить его привязкой к таблице. Я использую sap.ui.table в ValueHelpDialog. Я исправил данные столбца, которые я определил в массиве, и теперь мне нужно добавить данные из привязки списка в массив для привязки строки. я определил массив «aData», где я должен поместить данные набора данных / shrhelpSet с фильтром. Я пробовал это с

    //var aData = this.getModel().getData("/shrhelpSet").filter(oFilters);

Но это неправильный способ сделать это.

        // array with fix column names
        var aColumnData = [{
            columnId: "Key"
        }, {
            columnId: "Value"
        }];

        //var aData = this.getModel().getData("/shrhelpSet").filter(oFilters);

        var oModel2 = new sap.ui.model.json.JSONModel();

        oModel2.setData({
            columns: aColumnData,
            rows: aData
        });

        oTable.setModel(oModel2);

        oTable.bindColumns("/columns", function(index, context) {
            var sColumnId = context.getObject().columnId;
            //alert(sColumnId);
            return new sap.ui.table.Column({
                id : sColumnId,
                label: sColumnId,
                template: sColumnId
            });
        });
        oTable.bindRows("/rows");

1 Ответ

1 голос
/ 15 января 2020

Попробуйте добавить фильтры к привязке агрегации строк, как вы делали это ранее с агрегацией элементов ввода.

oTable.getBinding("rows").filter(oFilters);

Это должно быть сделано после последней строка вашего фрагмента (после слияния строк).

...