Ich benutze die ComboBox-Steuerung in SAP UI5. Ich muss die standardmäßig angemeldete Benutzer-ID anzeigen. Wie kann ich das erreichen? Diese Standardbenutzer-ID ist Teil des Odata-Dienstes. Zum Beispiel habe ich 10 Daten (INC0001 bis INC0010). Wenn sich der Benutzer INC0004 angemeldet hat, möchte ich dies standardmäßig in der ComboBox anzeigen. Ich bekomme gerade erst das erste Mal leer.

XML-Code:

<Select id="select1" 
        items="{ path: '/UserSet', sorter: { path: 'zuserid' } }" 
        change="handleChange">

     <core:Item text="{zuserid}" key="{zuserid}"/>
     <layoutData>
         <l:GridData span="XL2 L2"/>
     </layoutData>

</Select>

Sitzungsbenutzer in sap ui5:

var userId = sap.ushell.Container.getService("UserInfo").getUser().getId();
0
Ram 8 Feb. 2020 im 16:46

3 Antworten

Beste Antwort

Dies ist die Lösung für dieses Problem. Dies wird jedem helfen, der nach dem gleichen Ausschau hält.

 var oData ={
                recipient :{
                   name :"TCS0001"}};

    var oModel =newJSONModel(oData);
    this.getView().setModel(oModel,"NamedModel");


    <ComboBox id="combo1" selectedKey="{NamedModel>/recipient/name}" items="{ path: '/UserSet', sorter: { path: 'zuserid' } }" change="handleChange">
            <core:Item text="{zuserid}" key="{zuserid}"/>
            <layoutData>
             <l:GridData span="XL3 L3"/>
            </layoutData>
           </ComboBox><br>
0
Ram 15 Feb. 2020 im 15:43

Select hat einen Parameter namens selectedKey, den Sie dafür verwenden können. Normalerweise ist dies eine andere Modellbindung, aber Sie können dies auch programmgesteuert tun.

Das SDK enthält ein Beispiel: https://sapui5.netweaver.ondemand.com/sdk#/entity/sap.m.Select/sample/sap.m.sample.Select/code

            <Select
                forceSelection="false"
                selectedKey="{/SelectedProduct}"
                items="{
                    path: '/ProductCollection',
                    sorter: { path: 'Name' }
                }">
                <core:Item key="{ProductId}" text="{Name}" />
            </Select>
0
Jorg 9 Feb. 2020 im 12:22

Haben Sie versucht, die Daten in Ihrem Controller zu binden?

this.getView().byId("select1").bindItems({
            path: "/UserSet",
            template: new sap.ui.core.Item({
                key: "{zuserid}"
                text: "{zuserid}"
            }),
            events: {
                dataReceived: function () {
                    var userId = sap.ushell.Container.getService("UserInfo").getUser().getId();
                    this.getView().byId("select1").setSelectedKey(userId);
                }.bind(this)
            }
        });

Das Ereignis dataReceived wird ausgelöst, sobald die Daten empfangen wurden, und zu diesem Zeitpunkt ist es möglich, den ausgewählten Schlüssel Ihres ComboBox so festzulegen, wie @Jorg in der obigen Reaktion vorschlägt.

1
U10-Forward 17 Feb. 2020 im 03:05