Я очень новичок в кодировании и в 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 выяснить, как:
- Использование примера коллекции продуктов
- Использование средства форматирования на привязках, чтобы увидеть, что на самом деле достигает ячеек (мой коллега предложил это). Я пока не смог понять, как это сделать в этой ситуации.
Любая помощь будет оценена МАССИВНО.
Приветствия