【问题标题】:Get selected item from sap.m.Select from a sapui5 table column从 sap.m 中获取所选项目。从 sapui5 表列中选择
【发布时间】:2016-03-10 21:09:17
【问题描述】:

我正在使用 sap.m.Table,其中有 3 列,分别为 sap.m.text、sap.m.setect,最后一列是按钮。

我的型号代码

var oModel = new sap.ui.model.odata.OData("url");
sap.ui.getCore().setModel(oModel ,"data");

表格视图代码(单元格)

var oTemplate = new sap.m.ColumnListItem({
        cells : [
            new sap.m.Text({
                text: "{data>Address}"
            }),
            new sap.m.Select({
                id:"sel",
                items: {
                    path: "data>/OPERATORS", // this is a diffent table
                    template: new sap.ui.core.Item({
                    text: "{data>firstName} {data>lastName}"
                    })
                },
                forceSelection: false

            }),
            new sap.m.Button({
                        text : "Start",
                        press : [oController.onPressStart, oController]
             })
        ]
    });
oTable.bindItems("data>/ORDR", oTemplate); //differnt table

工作正常,获取特定表上的所有必需数据。(注意第一列来自 ORDR 表,第二列来自 OPERATORS 表)。

现在单击按钮时,我想要特定的行数据。我的代码如下-

onPressStart : function(oEvent){  
   var obj = oEvent.getSource().getBindingContext("data").getObject();
   },

“obj”给了我 ORDR 表行对象(我按下按钮的地方)。

现在我还想要在下拉框中选择的值。如何获得。

请推荐,谢谢

JSbin 链接 - http://jsbin.com/quhomoloqo/edit?html,console,output

【问题讨论】:

  • 你的意思是selectControl.getSelectedItem().getText()?
  • 请检查 JSbin 链接,在控制台中,当我单击相应按钮时,我得到了地址,但我也想要从下拉列表中选择的值。如何获得它
  • 您尚未将Select 的控件selectedKey 属性绑定到data>/ORDR/??? 属性
  • 嗨@Qualiture,你指的是这一行吗[//var sel = oEvent.getSelectedItem().getText();] 我在 sap.m 中绑定 [data>/OPERATORS]。选择
  • 不,我缺少selectedKey 的数据绑定,即new sap.m.Select({selectedKey : "{data>whateverpropertyyoustoretheselectedvalue}", items : { etc... }});

标签: sapui5


【解决方案1】:

查看这个工作示例:

请注意(为了这个问题)如何创建两个模型: 一个名为 'orig' 的文件包含您的原始 OPERATORODRD 数据,以及 一个名为 'data' 的文件,其中包含 OPERATOR 数据的副本,并添加了 Address 属性。

查看如何使用这两种模型的视图代码(新的用于表格,旧的用于填充下拉菜单)

sap.ui.controller("view1.initial", {
    onInit : function(oEvent) {
    },

    onAfterRendering : function() {
        // your original model
        var oModel        = new sap.ui.model.json.JSONModel();

        var oData = {
            "ODRD":[
                {"Address":"UK"},
                {"Address":"US"}
            ],
            "OPERATORS":[
                {"firstName":"a","lastName":"b"},
                {"firstName":"c","lastName":"d"}
            ]
        };

        oModel.setData(oData);

        this.getView().setModel(oModel, "orig");

        // the model you actually need
        var oNewModel     = new sap.ui.model.json.JSONModel();

        var oNewData = oData.OPERATORS.map(function(result) {
            return {
                firstName : result.firstName,
                lastName : result.lastName,
                keyToAddress : null
            }
        })

        oNewModel.setData({
            "OPERATORS" : oNewData
        });

        this.getView().setModel(oNewModel, "data");
    },

    showData : function(oEvent) {
        alert(JSON.stringify(oEvent.getSource().getBindingContext("data").getObject()));
    }
});

sap.ui.xmlview("main", {
    viewContent: jQuery("#view1").html()
})
.placeAt("uiArea");
<script id="sap-ui-bootstrap"
    src="https://sapui5.hana.ondemand.com/resources/sap-ui-core.js"
    data-sap-ui-theme="sap_bluecrystal"
    data-sap-ui-xx-bindingSyntax="complex"
    data-sap-ui-libs="sap.m"></script>

<div id="uiArea"></div>

<script id="view1" type="ui5/xmlview">
    <mvc:View 
      controllerName="view1.initial"
      xmlns="sap.m"
      xmlns:core="sap.ui.core"
      xmlns:mvc="sap.ui.core.mvc" >
        <Table id="tbl" items="{data>/OPERATORS}">
            <columns>
                <Column>
                    <Text text="First" />
                </Column>
                <Column>
                    <Text text="Last" />
                </Column>
                <Column>
                    <Text text="ODRD" />
                </Column>
                <Column>
                    <Text text="" />
                </Column>
            </columns>
            <items>
                <ColumnListItem>
                    <cells>
                        <Input value="{data>firstName}" />
                        <Input value="{data>lastName}" />
                        <Select items="{orig>/ODRD}" selectedKey="{data>keyToAddress}">
                            <items>
                                <core:ListItem key="{orig>Address}" text="{orig>Address}" />
                            </items>
                        </Select>
                        <Button text="Show data" press="showData" />
                    </cells>
                </ColumnListItem>
            </items>
        </Table>
    </mvc:View>
</script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 2016-08-05
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多