¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

¿Cómo vincular un atributo de entidad a una propiedad de control en un modelo OData?

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 6 Vistas
0
Cargando...

¿Es posible vincular un solo atributo de una sola entidad a una propiedad de control si tu modelo es un odata? El enlace funciona bien si vinculas una agregación a un EntitySet, pero parece que no funciona con propiedades a Entidades. Digamos que tengo un conjunto de entidades llamado "UserlistSet". Cada "Userlist" tiene el atributo "Username". Me gustaría vincular una etiqueta en una tabla al Usuario de una de las entidades en ese conjunto.

¿Qué está mal con el siguiente código?

var layout = new sap.ui.commons.layout.MatrixLayout('layout');

layout.setWidth('60%');

var oTable = new sap.ui.table.DataTable();

oTable.addColumn(

new sap.ui.table.Column({

label: new sap.ui.commons.Label() .bindProperty("text","Username") ,

template: new sap.ui.commons.TextField() .bindProperty("value","Username") ,

sortProperty: "Username"

}));

var sUrl = "/sap/opu/odata/sap/ZUSERLIST_SRV/";

var oModel = new sap.ui.model.odata.ODataModel(sUrl, true);

sap.ui.getCore().setModel(oModel);

oTable.setModel(oModel);

oTable.bindRows("Userlist");

layout.createRow(oTable);

return layout;

Gracias de antemano.

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Hi,

Use like this.

oTable.addColumn( new sap.ui.table.Column({

label: new sap.ui.commons.Label({text: "ID" }),

visible: true ,

template: new sap.ui.commons.TextField({value: "{products>ID}" })

}));


in place of this.


oTable.addColumn(

new sap.ui.table.Column({

label: new sap.ui.commons.Label() .bindProperty("text","Username") ,

template: new sap.ui.commons.TextField() .bindProperty("value","Username") ,

sortProperty: "Username"

}));

and your code will work.

and it's better to initialize your model in Init method of controller like this.

var oModel = new sap.ui.model.odata.ODataModel( "proxy/http/services.odata.org/V3/(S(3ngooq0fkelm0nublhbj01xu))/O

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...
Gracias por publicar una consulta común,... estábamos enfrentando el mismo problema...

Nimish Kate Aluminio


    Nimish Kate escribió:

    ¿Es posible vincular un único atributo de una única entidad a una propiedad de control si su modelo es un odata? La vinculación funciona bien si vincula una agregación a un conjunto de entidades, pero no parece funcionar con propiedades a entidades. Digamos que tengo un conjunto de entidades llamado "UserlistSet". Cada "Userlist" tiene el atributo "Nombre de usuario". Me gustaría vincular una etiqueta en una tabla al Nombre de usuario de una de las entidades en ese conjunto.
    ¿Qué está mal con el siguiente código?
    var layout = new sap.ui.commons.MatrixLayout('layout');
    layout.setWidth('60%');

    var oTable = new sap.ui.table.DataTable();
    oTable.addColumn(
      new sap.ui.table.Column({
        label: new sap.ui.commons.Label().bindProperty("text","Username"),
        template: new sap.ui.commons.TextField().bindProperty("value","Username"),
        sortProperty: "Username"
      }
        
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

¡Hola Santhosh!

Tu enlace proporcionó la solución. ¡Muchas gracias!

Mi error fue que estaba vinculando cada columna al modelo oData usando .bindProperty()

En lugar de eso, asigné las propiedades a sus valores de esta manera:

oTable.addColumn(new sap.ui.table.Column({

label: new sap.ui.commons.Label({text: "Nombre de usuario"}),

template: new sap.ui.commons.TextField({value: "{Username}"})

}));

Y luego procedí a vincular todo a la colección de entidades oData después de la tabla:

oTable.setModel(oModel);

oTable.bindRows("/UserlistSet");

Y funcionó perfectamente.

Si no te importa, corregiría ese código que sugeriste:

...

...

De cualquier manera, eso no estaba funcionando para mí. Tu enlace me dio la respuesta.

¡Muchas gracias!

Saludos,

-NK

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Esto puede ayudarte a entender el sap.ui.table

y en tu código,

new sap.ui.table.Column({

label: new sap.ui.commons.Label (text:'{path:"# UserlistSet /Username/@sap:label"}') ,

template: new sap.ui.commons.TextField() .bindProperty("value","Username") ,

sortProperty: "Username"

}));

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?