CLR: .Net / Mono / Boo / Otros CLR > ASP .NET

 Hipervinculo Opcional

(1/3) > >>

Moy:
¿Como se podría hacer esto?
Supongamos que tengo una tabla que entre otras cosas tiene una lista de URLs, pero que algunas pueden estar vacías.
Ahora bien, me monto un repeater que lea la tabla y muestre los datos, pero que en el caso de la URL muestre un hipervinculo solo en el caso de que el valor que reciba no sea nulo.

Es que no estoy conforme con este código:

--- Código: Text --- <asp:HyperLink id="Hyperlink4" runat="server" Text="Ver más" Target="_blank" NavigateUrl='<%# DataBinder.Eval(Container.DataItem, "URL") %>'></asp:HyperLink>  
Cuando la URL es nula, se ve igualmente un texto "Ver más" aunque esté desactivado.
Lo que quiero es que no aparezca absolutamente nada.

¿Como podría hacerse?

pinareta:
depende de como quieras hacerlo, si la url te tiene que volver despues de una recarga pon el atributo visible a true o false segun llegue llena o vacia, o bien puedes hacerlo con estilos display none o display inline

Moy:
Hm... ¿Que?  :wacko:
Estás suponiendo que tengo conocimientos medios de ASP.Net y en realidad apenas llevo 3 días con este lenguaje y a base de copiar y pegar ejemplos de tutoriales.

Aun así, creo que entiendo lo del Div. Meter el link en un Div con Display = none podría servir; pero aun no sé como gestionarlo ya que no sé usar condicionales.

Técnicamente, tendría que ser posible crear una función con dos parametros, uno el identificador del Div (por si quiero usarla con varios Divs diferentes) y otro una cadena que vendría a ser el enlace.
Dentro de la función habría un if que comprobaría si la cadena no está vacía, y en caso de que lo estuviera, cambiaría el Display del Div con la identificación pasada por parametro y lo ocultaría (o si el Div está oculto por defecto y la cadena tiene una direccion válida, lo mostraría).

Mis dudas son:
¿Cómo se hace eso y como se implementa en ASP.Net?
¿Como se llama a esa función, desde donde y de qué manera se le pasan los parámetros?

Tened paciencia conmigo, que soy novato. :(

Moy:
Casi lo tengo...
Repasemos:
-Tenemos un repeater enlazado a un dataset con varias columnas que guardan driecciones de internet o pueden estar vacíos.
-Dentro del repeater hay un par de celdas que deben mostrar un hipervinculo solo en el caso de que el enlace no esté vacío
-Puedo obtener el contenido de cada columna del dataset conectado al Repeater con este código: <%# DataBinder.Eval(Container.DataItem, "Link") %>

Una solucion podría ser:

--- Código: Text --- &#60;td align=&#34;center&#34;&#62;  &#60;%if (ENLACE &#60;&#62; &#34;&#34;)%&#62;          &#60;div&#62;    &#60;asp:HyperLink Font-Name=arial Font-size= 10pt id=&#34;Hyperlink5&#34;runat=&#34;server&#34; Text=&#34;Cuña&#34; Target=&#34;_blank&#34; NavigateUrl='&#60;%# DataBinder.Eval(Container.DataItem, &#34;Link3&#34;) %&#62;'&#62;          &#60;/asp:HyperLink&#62;&#60;/div&#62; &#60;%end if%&#62;&#60;/td&#62;  Siempre y cuando en ENLACE me dejase meter <%# DataBinder.Eval(Container.DataItem, "Link3") %>
¡Pero no me deja!  :hitcomp:

Estoy empezando a odiar el ASP.Net.  :angry:

Güorker:
Hola,

pero cuando dices que no te deja poner el DAtaBinder en el lugar de Enlace...
lo intentas poner con los caracteres <% o sin ellos??

es decir, pones esto:

--- Código: Text --- &#60;%if ( &#60;%# DataBinder.Eval(Container.DataItem, &#34;Link3&#34;) %&#62; &#60;&#62; &#34;&#34;)%&#62;  o esto?

--- Código: Text --- &#60;%if ( # DataBinder.Eval(Container.DataItem, &#34;Link3&#34;)  &#60;&#62; &#34;&#34;)%&#62;  
entiendes porque lo pregunto?

saludos, suerte y iun poco de paciencia.

PD: Yo para crear estructuras en forma de tabla a partir de datos de la BD suelo utilizar el DataGrid. Nunac he usado el Repeater y tampoco conozco la sventajas y desventajas de cada uno. Solo quiero decirte que hay alternativas al Repeater.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa