SAPUI5 ValueHelpDialog Ячейки пустые - PullRequest
0 голосов
/ 01 октября 2019

Я очень новичок в кодировании и в StackOverflow. Я пытаюсь создать диалоговое окно справки sapui5 Value (class sap.ui.comp.valuehelpdialog.ValueHelpDialog), которое должно завершать фильтрацию поисковых запросов из пользовательской таблицы в бэкэнд-сервисе SAP.

Сейчас я даже не могу получитьэто для правильного отображения моих макетов. Макетные данные состоят из «Personen.json» с массивом пользователей со следующими полями, например фрагментом этого примера:

    [{
    "BewId": "2123456789",
    "Posno": 1,
    "PNumber": "P87879876",
    "Firstname": "Heinz",
    "Company": "Some company",
    "IsIntern": true,
    "Lastname": "Wolff"
}, {
    "BewId": "2123456789",
    "Posno": 2,
    "PNumber": "P23498711",
    "Firstname": "Karl",
    "Company": "some company",
    "IsIntern": true,
    "Lastname": "Schmidt"
}]

Я пробовал почти все, что мог придумать:

  • Помещение буквенных значений вместо привязок в текстовое поле ячеек.
  • Использование getTableAsync().then вместо getTable().
  • Различные различные пути, включая полный путь через весьдерево папок и /Personen (что не имеет смысла для текущей структуры JSON, я не думаю).
  • с использованием bindRows() вместо bindAggregation().
  • Созданиеобычная таблица в корневом представлении с sap.m.Table вместо sap.ui.table.Table (насколько я могу судить, это тип внутренней таблицы ValueHelpDialog). При этом данные отображались без проблем.
  • Изменение синтаксиса моего Personen.json таким образом, чтобы в нем была одна коллекция Personen, и изменение пути на /Personen в функции привязки.
  • Следуя примеру из примера как можно точнее.
  • Определение структуры столбцов в контроллере с помощью addColumn() вместо определения ее в модели, как у меня сейчас:

    "columnModel.json"
    {cols": [
    {
        "label": "{i18n>pNumber}",
        "template": "{PNumber}"
    },
    {
        "label": "{i18n>firstname}",
        "template": "{Firstname}"
    },
    {
        "label": "{i18n>lastname}",
        "template": "{Lastname}"
    }]}
    

Сильфон - это функция обработчика событий для справки по значению, нажмите в моем контроллере основного представления:

    handleValueHelp: function () {
            var oColModel = this.getView().getModel("columnsModel");
            var oUserModel = this.getView().getModel("userModel");
            this._oValueHelpDialog = sap.ui.xmlfragment("appName.view.ValueHelpPopover", this);
            this.getView().addDependent(this._oValueHelpDialog);

            var oTable = this._oValueHelpDialog.getTable();

            oTable.setModel(oUserModel);
            oTable.setModel(oColModel, "columns");

            var oTemplate = new sap.m.ColumnListItem({
                type: sap.m.ListType.Active,
                cells: [
                    new sap.m.Label({
                        text: "{PNumber}"
                    }),
                    new sap.m.Label({
                        text: "{Firstname}"
                    }),
                    new sap.m.Label({
                        text: "{Lastname}"
                    })
                ]
            });

            if (oTable.bindRows) {
                oTable.bindAggregation("rows", "/");
            }

            if (oTable.bindItems) {
                oTable.bindAggregation("items", "/", oTemplate);
            }

            this._oValueHelpDialog.update();

            this._oValueHelpDialog.open();

        }

Мой фрагмент представления XML для ValueHelpDialog:

    "ValueHelpPopover.fragment.xml"
    <core:FragmentDefinition xmlns:vhd="sap.ui.comp.valuehelpdialog" xmlns:core="sap.ui.core" xmlns="sap.m">
<vhd:ValueHelpDialog id="valueHelp" title="{i18n>valueHelpTitle}" ok=".onValueHelpOkPress" cancel=".onValueHelpCancelPress"
    afterClose=".onValueHelpAfterClose" key="Firstname" descriptionKey="Lastname"></vhd:ValueHelpDialog>

В настоящее время я не получаю никаких сообщений об ошибках, но я получаю такой вывод: https://ibb.co/q58sk1V Когда я выбираю строки, я могу сказать изключ, что они являются объектами из моей модели json odata, но текст ячейки все еще пуст.

Я хочу, чтобы связанные значения PNummer, Имя, Фамилия отображались в ячейках, как показано в шаблоне.

Вещи, которые я хочу попробовать, но еще не получил шанс или могу 't выяснить, как:

  • Использование примера коллекции продуктов
  • Использование средства форматирования на привязках, чтобы увидеть, что на самом деле достигает ячеек (мой коллега предложил это). Я пока не смог понять, как это сделать в этой ситуации.

Любая помощь будет оценена МАССИВНО.

Приветствия

Ответы [ 2 ]

0 голосов
/ 04 октября 2019

По какой-то причине определение таблицы во фрагменте всплывающего окна представления xml диалогового окна «Справка по значению», которое находится ниже реальной внутренней таблицы, привело к решению проблемы, даже после того, как я удалил таблицу, и код был по существу идентичен тому, как это былокогда он все еще не работал. Есть идеи, почему это было? Мне любопытно понять эту проблему.

0 голосов
/ 04 октября 2019

Добавьте столбец в таблицу, и вы сможете увидеть строку с фактическим значением в таблице.

 var oColumn = new sap.ui.table.Column({
        label: new sap.m.Label({text: "PNumber"}),
        template: new sap.m.Text({text: "{PNumber}"}),
        width: "100px"
});

if (oTable.bindRows) {
        oTable.addColumn(oColumn);
        oTable.bindAggregation("rows", "/");
}
...