首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SAPUI5 ValueHelpDialog细胞空

SAPUI5 ValueHelpDialog细胞空
EN

Stack Overflow用户
提问于 2019-10-01 15:34:37
回答 2查看 3.3K关注 0票数 0

我对编码和StackOverflow非常陌生。我正在尝试创建一个sapui5值帮助对话框( class sap.ui.comp.valuehelpdialog.ValueHelpDialog),它应该最终过滤来自supposed服务中的用户表的搜索请求。

现在,我甚至不能让它正确地显示我的模拟数据。mockdata由一个"Personen.json“组成,其中有一个包含如下字段的用户数组,如下面的示例片段:

代码语言:javascript
复制
    [{
    "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":{”标签“:"{i18n>pNumber }”、“模板”:"{PNumber }“}、{”标签“:"{i18n>firstname}”、“模板”:"{Firstname}“}、{”标签“:"{i18n>lastname}”、“模板”:“{i18n>lastname}”}

Bellow是我的主视图控制器中的值帮助按下的事件处理程序函数:

代码语言:javascript
复制
    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:

代码语言:javascript
复制
    "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>

目前,我没有收到任何错误消息,但是我得到了这样的输出:当我选择行时,我可以从键中看出它们是来自模拟json模型的对象,但是单元格文本仍然是空的。

我希望绑定的值PNummer、Firstname、Lastname显示在单元格中,如模板中所示。

一些我想尝试但还没有得到机会的事情,或者不知道该怎么做:

  • 使用示例产品集合
  • 使用绑定上的格式化程序来查看实际到达单元格的内容(我的同事建议这样做)。我还没想出在这种情况下该怎么做。

任何帮助都将不胜感激。

干杯

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-04 13:03:22

由于某种原因,在Value Help对话框的xml视图popover片段中定义一个表,它会导致实际内部表出现问题,即使在我删除了该表,并且代码在本质上与它仍然无法工作时是一样的。知道为什么会这样吗?我很想了解这个问题。

票数 1
EN

Stack Overflow用户

发布于 2019-10-04 12:25:41

将列添加到表中,然后可以在表中看到具有实际值的行。

代码语言:javascript
复制
 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", "/");
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58188148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档