Avalados por :

Como vincular um atributo de entidade a uma propriedade de controle em um modelo OData?

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

É possível vincular apenas um atributo de uma única entidade a uma propriedade de controle se o seu modelo for um odata? A ligação funciona bem se você vincular uma agregação a um EntitySet, mas parece que não funciona com propriedades para Entidades. Digamos que tenho um conjunto de entidades chamado "UserlistSet". Cada "Userlist" tem o atributo "Username". Gostaria de vincular uma etiqueta em uma tabela ao Usuário de uma das entidades nesse conjunto.

O que há de errado com o seguinte 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;

Obrigado antecipadamente.

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

4 Respuestas

0
Cargando...

Olá,

Use assim.

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

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

visível: verdadeiro ,

modelo: novo sap.ui.commons.TextField({value: "{products>ID}" })

}));


em vez disso.


oTable.addColumn(

novo sap.ui.table.Column({

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

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

sortProperty: "Username"

}));

e seu código funcionará.

e é melhor inicializar seu modelo no método Init do controlador assim.

var oModel = novo 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...
Obrigado por postar uma consulta comum,... estávamos enfrentando o mesmo problema...

Nimish Kate Aluminio


    Nimish Kate escreveu:

    É possível vincular um único atributo de uma única entidade a uma propriedade de controle se seu modelo for um odata? A vinculação funciona bem se vincular uma agregação a um conjunto de entidades, mas não parece funcionar com propriedades a entidades. Digamos que tenho um conjunto de entidades chamado "UserlistSet". Cada "Userlist" tem o atributo "Nome de usuário". Gostaria de vincular um rótulo em uma tabela ao Nome de usuário de uma das entidades nesse conjunto.
    O que há de errado com o seguinte 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...

Olá Santhosh!

Seu link forneceu a solução. Muito obrigado!

Meu erro foi estar vinculando cada coluna ao modelo oData usando .bindProperty()

Em vez disso, atribuí as propriedades aos seus valores desta forma:

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

label: new sap.ui.commons.Label({text: "Nome de usuário"}),

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

}));

E então prossegui para vincular tudo à coleção de entidades oData após a tabela:

oTable.setModel(oModel);

oTable.bindRows("/UserlistSet");

E funcionou perfeitamente.

Se não se importa, corrigiria aquele código que sugeriu:

...

...

De qualquer forma, aquilo não estava funcionando para mim. Seu link me deu a resposta.

Muito obrigado!

Cumprimentos,

-NK

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

Isso pode ajudá-lo a entender o sap.ui.table

e no seu 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?