¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Problema al establecer valor de campo en modelo oData usando setProperty: solución y tips

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

Hola,

No puedo establecer el valor de un campo en el modelo oData usando setProperty, obtengo "false" como valor de retorno.

He utilizado una "Aplicación maestro-detalle CRUD". Desde la vista Detalle, navego a la vista de Edición. Tengo campos de entrada y un botón de radio en la página de Edición. Si cambio el valor del campo de entrada, el modelo se actualiza. Para el botón de radio, tengo una función para la propiedad "select" definida para RadioButtonGroup. Estoy obteniendo el valor (según el índice seleccionado) pero al usar setProperty en el modelo oData, obtengo un false como retorno.

En el controlador de la vista de Edición, en la función "OnInit", hago una llamada a la función "_onEdit". La estoy utilizando para enlazar los datos a la vista.

oPath = "/ItemsEntitySet(Index)" (Índice seleccionado en la vista Detalle)

oView.bindElement({

path: oPath

});

En la selección del botón de radio, obtengo el índice seleccionado y el valor correspondiente al índice e intento establecer el valor de nuevo en el modelo oData (200 es el valor a establecer para el campo en el modelo oData Items Entity. Y oResult es "false").

var oResult = this.getModel().setProperty("/ItemsEntityDetail/Index/Field", "200");

Por favor, házmelo saber qué me falta. Otros campos de entrada en la vista de Edición se actualizan automáticamente cuando se cambian sus valores.

Gracias,

Anna

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

4 Respuestas

0
Cargando...

Vista Maestra

<List id="list" items="{ path: '/BankTypeSet', sorter: { path: 'Stext', descending: false }, groupHeaderFactory: '.createGroupHeader' }" busyIndicatorDelay="{masterView>/delay}" noDataText="{masterView>/noDataText}" mode="{= ${device>/system/phone} ? 'None' : 'SingleSelectMaster'}" growing="true" growingScrollToLoad="true" updateFinished="onUpdateFinished" selectionChange="onSelectionChange">

<infoToolbar>

<Toolbar active="true" id="filterBar" visible="{masterView>/isFilterBarVisible}" press="onOpenViewSettings">

<Title id="filterBarLabel" text="{masterView>/filterBarLabel}"/>

</Toolbar> </infoToolbar>

<items>

<ObjectListItem type="{= ${device>/system/phone} ? 'Active' : 'Inactive'}" press="onSelectionChange" title="{Stext}"></ObjectListItem>

</items>

</List>

Vista Detallada

<List id="employeeList" items="{BankDataNav}">

<items>

<ObjectListItem title="Nombre del Banco: {Banka}" iconDensityAware="false" number="{Bankn}">

<attributes>

<ObjectAttribute title="{ path: 'Begda', type: 'sap.ui.model.type.Date', formatOptions: { style: 'medium', UTC: true } }" text="{ path: 'Endda', type: 'sap.ui.model.type.Date', formatOptions: { style: 'medium', UTC: true } }"/>

<ObjectAttribute text="Clave del Banco: {Bankl} "/>

<ObjectAttribute title="Clave de Control del Banco" text="{path: 'Bkont', formatter: '.conv2Text' }"/>

<ObjectAttribute title="Método de Pago" text="{path: 'Zlsch', formatter: '.conv2Text' }"/>

</attributes>

</ObjectListItem>

</items>

</List>

Vista de Edición

<f:SimpleForm id="SF_Id" maxContainerCols="2" layout="ResponsiveGridLayout" title="Editar: {Banka}" minWidth="1024" columnsL="1" columnsM="1" editable="true" emptySpanL="4" emptySpanM="4" labelSpanL="3" labelSpanM="3">

<f:content>

<Label text="Válido desde" required="true"/>

<DatePicker name="Begda" value="{ path: 'Begda', type: 'sap.ui.model.type.Date', formatOptions: { style: 'medium', UTC: true, maxLength:15}}" id="Begda_id" enabled="{= ${viewModel>/mode} === 'edit'? true: false}" visible="true"/>

<Label text="Número de clave del banco" required="true"/>

<Input name="Bankl" id="Bankl_id" valueLiveUpdate="true" liveChange="_validateSaveEnablement" enabled="{= ${viewModel>/mode} === 'edit'? true: false}" visible="true" value="{Bankl}"/>

<Label text="Cuenta bancaria" required="true"/>

<Input name="Bankn" id="Bankn_id" valueLiveUpdate="true" liveChange="_validateSaveEnablement" enabled="{= ${viewModel>/mode} === 'edit'? true: false}" visible="true" value="{Bankn}"/>

<Label text="Tipo de cuenta" required="true"/>

<RadioButtonGroup select="onSelectRadio" columns="2" id="RBG_Id">

<buttons>

<RadioButton id="RB1-1" text="Cuenta corriente"/>

<RadioButton id="RB1-2" text="Cuenta de ahorro"/>

</buttons>

</RadioButtonGroup>

</f:content>

</f:SimpleForm>

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

Es un Modelo oData.

var oPath1 ="/BankDetailSet("+index+")";

var oSet = this.getModel().setProperty(oPath1+"/Bkont", "02");

¿Quieres que suba el archivo del proyecto?

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

¿Puedes mostrarme tu código? ¿Estás utilizando JSONModel o ODataModel?

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

Hola Jun,

Gracias por la respuesta rápida. Intenté con tu sugerencia y todavía no funcionó.

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?