¿Alguien podría darme alguna idea de cómo crear enlaces en los contenidos de las columnas de la tabla (solo para dos columnas) y estos contenidos provienen del servicio ODATA y después de presionar cualquier contenido debería ir al enlace en particular?
Ex. Supongamos que el contenido de cada tabla tiene {mainUrl} y
Para la primera columna: Enlace profundo: /bb/ccc/eee?reqid = URL de ejemplo: {mainUrl}/bb/ccc/eee?reqid=6000
Para la segunda columna: Enlace profundo: /bb/cc/fff?jobid= Ejemplo: {mainUrl}/bb/cc/fff?jobid=4000
Probé un par de ejemplos: ex-1 , ex-2 . Pero no estoy seguro de cómo solucionarlo en este caso. Realmente apreciaría si pudiera proporcionarme algunos códigos de ejemplo si es posible.
Gracias por adelantado.
Un ejemplo simple de cómo crear enlaces en las columnas de la tabla se basa en Enlace: ejemplo sutil .
En /mockdata/products.json para cada valor de campo 'ProductPicUrl', elimine un nombre de host 'https://openui5.hana.ondemand.com' .
Como resultado, el enlace en la columna tiene un host del servidor de desarrollo, por ejemplo, 'http://localhost:8081/test-resources/sap/ui/documentation/sdk/images/HT-2001.jpg'
En la vista Link.view.xml, cambie el contenido de la primera columna agregando una función de formateador. Consulte el Paso 22 del Tutorial: Formateadores personalizados :
<ColumnListItem> <Link text="{Name}" href="{ path: 'ProductPicUrl', formatter: '.hrefFormatter' }" />E implemente el formateador en el archivo del controlador Link.view.xml:
hrefFormatter: function(sUrl) { var mainUrl = 'https://openui5.hana.ondemand.com'; return mainUrl + sUrl; } El uso del formateador proporciona una URL de enlace modificada: 'https://openui5.hana.ondemand.com/test-resources/sap/ui/documentation/sdk/images/HT-1002.jpg'
Resolví esto escribiendo los códigos en el archivo JS:
createAllColumns: function () { ..... ..... var oTemplate = new Text({ text: sText, wrapping: false }); // for default columns if (oChar.charId === "columnID") { oTemplate = new Link({ text: sText, press: this.readTheID }); } ...... ...... }, readTheID: function (oEvent) { const oBind = oEvent.getSource().getParent().getBindingContext("service name"); const obj = oBind.getObject().columnID; const value = oEvent.getSource().getProperty("text"); return models.getInstance().getOdataWrapper().getEntitySet({ path: "/OdataServiceEntitySet", filters: [new Filter({ path: "name", operator: FilterOperator.EQ, value1: "mainUrl" }), new Filter({ path: "columnID", operator: FilterOperator.EQ, value1: obj })], And: true }).then((odata) => { if (odata.length > 0) { var mainLink = odata[0].getObject().value; sap.ui.require([ "sap/m/library" ], sapMLib => sapMLib.URLHelper.redirect(mainLink + "/bb/ccc/eee?reqid=" + value, /*new window*/true)); } }).catch((err) => { sap.m.MessageToast.show("Failed"); }); },Nota : "sap/m/Link" produce enlaces dinámicos. En ese caso, no podemos reservar los enlaces en los contenidos de la columna, por eso el usuario no puede copiar el enlace directamente desde el contenido.