Sábado 9 de Noviembre de 2024, 02:20
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
CLR: .Net / Mono / Boo / Otros CLR
»
ASP .NET
(Moderador:
sergiotarrillo
) »
Lanzar Una Pagina Con Condicion
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Lanzar Una Pagina Con Condicion (Leído 4463 veces)
Maxus
Nuevo Miembro
Mensajes: 9
Lanzar Una Pagina Con Condicion
«
en:
Jueves 7 de Junio de 2007, 11:03 »
0
Os pongo en antecedentes:
Estoy desarrollando una pagina en ASP.net, necesito hacer que cuando haces click en una imagen se llame a una pagina (eso ya esta hecho), pero con una pequeña peculiaridad... y es que si uno de los campos de la imagen es distinto de NULL, que llame a otra pagina... A ver, intentare explicarme mejor.
Tengo un DataList y un Repeater en una pagina en la que cargo el 50% de las páginas. Es decir, en mi Web hay 2 tipos de páginas:
-Paginas con Pestañas
-Paginas con Contenido.
Las Pestañas las obtengo de la Base de Datos, tienen los siguientes campos (idPestana, Titulo, Contenido, Imagen, PestanaID) Esta tabla esta relacionada consigo misma, para conseguir recursividad e infinitos niveles.
La página en la que cargo las pestañas tiene este aspecto:
[IMAGEN 1]
Las páginas con Pestañas tienen esa estructura y cada pestaña puede contener otra página con pestañas o una pagina con contenido. La estructura de Contenido es diferente, tal que así:
[IMAGEN 2]
Como ves tengo 2 paginas por así decirlo principales, una en la que cargo las paginas con pestañas y otra donde cargo las paginas con Contenido. El problema que tengo es el siguiente:
Ahora mismo si haces clic en la página con Pestañas, navegas todo lo que quieras y el problema es que no se hacer para que cuando haces clic en una link de una pestaña que tiene contenido en vez de recargarme la Pagina de tipo 1, que me recargue la pagina de tipo 2.
-Pagina de tipo 1 => Pestanas.aspx
-Pagina de tipo 2 => Contenido.aspx
Yo entiendo que es una especie de <if>… algo como:
Si la consulta que estamos haciendo tiene el campo de Contenido = NULL recarga la misma pagina con los valores que tenga que pasar….
Sino, llama a la página Contenido.aspx y pasale los parámetros de la PestanaID.
El tema de pasar los parámetros no me preocupa porque ya lo tengo solucionado
MUCHISISIMAS GRACIAS POR TODO
UN ABRAZO
El mensaje contiene
1 archivo adjunto
. Debes
ingresar
o
registrarte
para poder verlo y descargarlo.
Tweet
Javier Santamaria
Miembro MUY activo
Mensajes: 142
Re: Lanzar Una Pagina Con Condicion
«
Respuesta #1 en:
Jueves 7 de Junio de 2007, 11:10 »
0
Los contenidos los cargas de la BD tambien de la tabla pestaña? Si es asi, supongo que cuando recuperes la pestaña puedes preguntar si contenido <> null y en caso afirmativo cargar la pagina de tipo 2.
Espero que te sirva, saludos
Maxus
Nuevo Miembro
Mensajes: 9
Re: Lanzar Una Pagina Con Condicion
«
Respuesta #2 en:
Jueves 7 de Junio de 2007, 12:12 »
0
Si, exacto. Eso es lo que necesito, pero no se hacerlo ;D
Perdona por mi ignorancia, pero es mi primer proyecto de ASP.net y estoy aprendiendo.
Todos los datos los guardo en la misma tabla. Si no es mucha molestia, me podrias decir como poner esa condicion. ¿iria en el Page_load ? es que no tengo ni idea, yo he intentado ponerlo hay, pero me daba error de sintaxis.
Muchas gracias.
Javier Santamaria
Miembro MUY activo
Mensajes: 142
Re: Lanzar Una Pagina Con Condicion
«
Respuesta #3 en:
Jueves 7 de Junio de 2007, 12:16 »
0
Podrias poner el codigo qeu haces para consultar a la base de datos y para luego mostrar los contenidos que te da el error de sintaxis a ver si viendolo te puedo echar una mano.
Maxus
Nuevo Miembro
Mensajes: 9
Re: Lanzar Una Pagina Con Condicion
«
Respuesta #4 en:
Jueves 7 de Junio de 2007, 15:34 »
0
Gracias por tu tan rapida contestacion. Este es el error:
Error 1 Preprocessor directives must appear as the first non-whitespace character on a line
Y este es el codigo que tengo puesto:
<%
string Cont = <%# Eval("Contenido") %>;
if(Cont != null || Cont =! "")
{
<a id="A1" href='<%# Eval("idPestana", "Contenido.aspx?PestanaID={0}") %>' runat="server">
<img src='<%# Eval("Imagen") %>' alt="Imagen" />
</a>
}
else
{
<a id="A2" href='<%# Eval("idPestana", "Turismo.aspx?PestanaID={0}") %>' runat="server">
<img src='<%# Eval("Imagen") %>' alt="Imagen" />
</a>
}
%>
Muchas gracias y a ver si me puedes hechar un cable.
Un saludo Javier
Javier Santamaria
Miembro MUY activo
Mensajes: 142
Re: Lanzar Una Pagina Con Condicion
«
Respuesta #5 en:
Jueves 7 de Junio de 2007, 16:44 »
0
Hola Maxus, yo suelo tener el codigo aparte porque me da mas claridad. De todas formas entiendo que este simbolo "<%" indica que empieza un bloque de codigo que no es HTML (si no es asi corrigeme, yo tambien soy novatillo en bastantes cosas
).
Pero el error al que se refiere creo que no tiene nada que ver con la consulta a la BD.
Podrias poner donde esta puesto ese codigo? Estaria dentro del page load como aqui:
*********************************************************************
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
Aqui iria el codigo que has puesto anteriormente
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
</form>
</body>
</html>
*********************************************************************
Y ya si puede ser pon el codigo completo de la pagina para ver que puede pasar. Indica donde te aparecen los dientes de sierra dando el error de sintaxis.
Un saludo
Maxus
Nuevo Miembro
Mensajes: 9
Re: Lanzar Una Pagina Con Condicion
«
Respuesta #6 en:
Jueves 7 de Junio de 2007, 16:53 »
0
Gracias pero sigo sin saber que poner
Para mi el planteamiento es sencillo.
A ver... el tema es que yo estoy rellendando un DataList con Repeater... y cada registro de la base de datos tendra unas caracteristicas (que tenga contenido o no lo tenga)... En caso de que no tenga el <a href> tendria que ser uno y sino, seria otro.
Yo ahora estoy rellenando la el DataList con el Repeater desde codigo ASP.net... no se si puedo hacerlo en el .cs. Si si se puede, todo estaria arreglado.... pero el caso es que no se hacerlo.
Os pido ayuda amigos.
MUCHISIMAS GRACIAS Javier.
Javier Santamaria
Miembro MUY activo
Mensajes: 142
Re: Lanzar Una Pagina Con Condicion
«
Respuesta #7 en:
Jueves 7 de Junio de 2007, 17:37 »
0
A ver esto es una prueba que he hecho. Esta en VB, pero se traduce facil a C#
*********************************************************************
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim item As DataListItem
For Each item In DataList1.Items
Dim hlink As HyperLink = item.FindControl("Hyperlink1")
Dim des As Label
des = item.FindControl("ContenidoLabel")
If des.Text = "True" Then
hlink.NavigateUrl = "~/url1.aspx"
hlink.Text = "url1"
Else
hlink.NavigateUrl = "~/url2.aspx"
hlink.Text = "url2"
End If
Next
End Sub
*********************************************************************
Mira a ver si te sirve.
Ya me cuentas.
Maxus
Nuevo Miembro
Mensajes: 9
Re: Lanzar Una Pagina Con Condicion
«
Respuesta #8 en:
Lunes 11 de Junio de 2007, 10:05 »
0
Hola Javier:
He probado tu codigo, pero no funciona. Te pongo "mi traduccion" a C# a ver si hay algo que no este bien:
Código: Text
foreach (DataListItem dli in DataList1)
{
HyperLink HLink = new HyperLink();
HLink.Target = dli.FindControl("Link").ToString();
Label Etiqueta = new Label();
Etiqueta.Text = dli.FindControl("Contenido").ToString();
if (Etiqueta.Text == "")
{
HLink.NavigateUrl = "~/url1.aspx";
HLink.Text = "URL1";
}
else
{
HLink.NavigateUrl = "~/url2.aspx";
HLink.Text = "URL2";
}
}
El error que me da con este codigo es este:
foreach statement cannot operate on variables of type 'System.Web.UI.WebControls.DataList' because 'System.Web.UI.WebControls.DataList' does not contain a public definition for 'GetEnumerator'
A mi se me ha ocurrido otra solucion, lo que pasa es que me da un error que no se solucionar, este es el codigo:
Código: Text
<ItemTemplate>
<td style="width: 135px; text-align: center; padding-bottom: 20px">
<%
string result = Eval("Contenido").ToString();
if (result == "")
Session["Pagina"] = "url1.aspx?PestanaID={0}";
else
Session["Pagina"] = "url2.aspx?PestanaID={0}";
%>
<a href='<%# Eval("idPestana", Session["Pagina"].ToString()) %>' runat="server">
<img src='<%# Eval("Imagen") %>' alt="Imagen" />
</a>
<br />
<span class = "Titulo">
<asp:Label ID="LabelTitulo" runat="server" Text='<%# Eval("Titulo") %>'></asp:Label><br />
</span>
</td>
<td style="width: 18px; margin-bottom: 30px"></td>
</ItemTemplate>
El error que me da es este:
Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control.
Y no lo entinedo, ya que lo estoy usando dentro del ItemTemplate... cada registro del ItemTemplate no es un DataBound ??? ....
Muchas gracias por tu tiempo.
Un saludo.
Javier Santamaria
Miembro MUY activo
Mensajes: 142
Re: Lanzar Una Pagina Con Condicion
«
Respuesta #9 en:
Lunes 11 de Junio de 2007, 11:31 »
0
Hola Maxus,
Yo veo un par de cosillas en esos codigos.
Primero yo hago esto:
For Each item In DataList1.Items
y tu haces esto:
foreach (DataListItem dli in DataList1)
Yo comparo con los elemntos del datalist y tu compara con el datalist completo. No creo qeu lo puedas hacer asi, deberia de haber alguna manera para recorrer los elementos.
Segundo no se si todos los campos del itemtemplate seran databounds. Para verlo yo iria al diseño en lugar del codigo para ver si lo puedes hacer por ahi.
Como recomendacion primero probaria con lo del punto 1.
Saludos
Maxus
Nuevo Miembro
Mensajes: 9
Re: Lanzar Una Pagina Con Condicion
«
Respuesta #10 en:
Lunes 11 de Junio de 2007, 12:15 »
0
Muchisimas gracias, pero aun no consigo arreglar esto
he modificado el codigo y ahora el error es este:
Object reference not set to an instance of an object.
este es el codigo:
Código: Text
foreach (DataListItem dli in DataList1.Items)
{
HyperLink HLink = new HyperLink();
Label Etiqueta = new Label();
Etiqueta.Text = dli.FindControl("Contenido").ToString();
if (Etiqueta.Text == "")
{
HLink.NavigateUrl = "~/url1.aspx";
HLink.Text = "URL1";
}
else
{
HLink.NavigateUrl = "~/url2.aspx";
HLink.Text = "URL2";
}
}
Y bueno, hay algo que no consigo entender... es ¿como se asigna el HyperLink a la imagen... ahora mismo no se esta haciendo ¿no?...
Y bueno, desde la vista de diseño si me aparece cada item como un databound....
MUCHAS GRACIAS AMIGO
Javier Santamaria
Miembro MUY activo
Mensajes: 142
Re: Lanzar Una Pagina Con Condicion
«
Respuesta #11 en:
Lunes 11 de Junio de 2007, 13:19 »
0
Hola Maxus,
Parece que se resiste el tema. A ver que al final sale.
He estado haciendo una prueba y a mi esto me funciona:
Pagina .aspx.cs
Código: Text
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
foreach (DataListItem dli in DataList1.Items)
{
Label Etiqueta = new Label();
HyperLink HLink = new HyperLink();
Etiqueta.Text = dli.FindControl("DestacadoLabel").ToString();
if (Etiqueta.Text == "false")
{
HLink.NavigateUrl = "~/url1.aspx";
HLink.Text = "URL1";
}
else
{
HLink.NavigateUrl = "~/url2.aspx";
HLink.Text = "URL2";
}
}
}
}
Pagina .aspx
Código: Text
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/dbweb.mdb"
SelectCommand="SELECT [Zona], [Metros], [Destacado] FROM [Inmueble]"></asp:AccessDataSource>
<asp:DataList ID="DataList1" runat="server" DataSourceID="AccessDataSource1">
<ItemTemplate>
Zona:
<asp:Label ID="ZonaLabel" runat="server" Text='<%# Eval("Zona") %>'></asp:Label><br />
Metros:
<asp:Label ID="MetrosLabel" runat="server" Text='<%# Eval("Metros") %>'></asp:Label><br />
Destacado:
<asp:Label ID="DestacadoLabel" runat="server" Text='<%# Eval("Destacado") %>'></asp:Label><br />
Link:
<asp:HyperLink ID="HyperLink1" runat="server">HyperLink</asp:HyperLink><br />
<br />
</ItemTemplate>
</asp:DataList></div>
</form>
</body>
</html>
Podrias decir exactamente en que linea te da le error. Es decir, que instruccion intentas ejecutar cuando te salta le error?
Saludos
Maxus
Nuevo Miembro
Mensajes: 9
Re: Lanzar Una Pagina Con Condicion
«
Respuesta #12 en:
Martes 12 de Junio de 2007, 10:35 »
0
Muchisimas gracias Javier Santamaria:
Te comento, la linea que me da el error es esta:
Etiqueta.Text = dli.FindControl("Contenido").ToString();
En mi base de datos tengo varias tablas y a la que hago el SqlDataSource tiene estos campos:
-idPestana
-Titulo
-Contenido
-Imagen
-PestanaID
Imaginemos que hago una consulta que me filtrara por PestanaID = 3, bien, el resultado "de ejemplo" seria algo asi:
Registro 1
------------
-idPestana = 53
-Titulo = Ejemplo1
-Contenido = NULL
-Imagen = /imagenes/ima1.jpg
-PestanaID = 3
Registro 2
------------
-idPestana = 65
-Titulo = Ejemplo2
-Contenido = NULL
-Imagen = /imagenes/ima2.jpg
-PestanaID = 3
Registro 3
------------
-idPestana = 91
-Titulo = Ejemplo3
-Contenido = "En este bello paisaje podemos contemplar como ...."
-Imagen = /imagenes/ima3.jpg
-PestanaID = 3
Registro 4
------------
-idPestana = 102
-Titulo = Ejemplo4
-Contenido = NULL
-Imagen = /imagenes/ima4.jpg
-PestanaID = 3
Registro 5
------------
-idPestana = 133
-Titulo = Ejemplo5
-Contenido = NULL
-Imagen = /imagenes/ima5.jpg
-PestanaID = 3
Bien, como sabes tengo 2 tipos de pagina "Pagina para pestañas" y "Pagina para Contenido". Ahora, esta consulta nos ha devuelto 3 registros "imaginarios" y el resultado hubiese quedado en una pagina tipo "Pagina para pestañas" Porque el resultado de la consulta eran mas pestañas... Solo que con una diferencia, ahora hay 5 registros, 4 apuntan a una pagina con mas pestañas y una apunta a una "Pagina para Contenido".
Yo antes los links los hacia con <a href>.... tu propones Hyperlink, el tema es que me gustaria que el link lo tubiese la imagen, es decir, que o bien fuese un imagebutton, o una imagen con un <a href> (en realidad no se me ocurren mas posibilidades).
Tengo una preguntilla. ¿el FindControl, busca el contenido del campo al que haces referencia dentro de la consulta realizada?
En serio, no se como darte las gracias por todo. A ver si no se nos resiste mas y cae este pequeño problema
Gracias a gente como tu, gente como yo salimos de agujeros
Muchas gracias de antemano Javier.
Javier Santamaria
Miembro MUY activo
Mensajes: 142
Re: Lanzar Una Pagina Con Condicion
«
Respuesta #13 en:
Martes 12 de Junio de 2007, 11:33 »
0
Hola de nuevo, prueba a crearte una aplicacion que simplemente te lea la BD y la meta en el datalist (como he hecho yo en el codigo que te he puesto).
De hecho puedes copiar ese codigo y cambiarle el datasource (en lugar de access haces uno de sql) y cambiar la consulta de seleccion por la que tu necesites.
Te dejo un ejemplo, pero probablemente lo tengas que adaptar (el ejemplo lo baso en el ultimo post). Te pongo los cambios en rojo:
Pagina .aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" DataFile="Tu base de datos"
SelectCommand="SELECT [idPestana], [Titulo], [Contenido], [Imagen], [PestanaID] FROM [Tu tabla]" WHERE [PestanaID=3]></asp:SqlDataSource>
<asp:DataList ID="DataList1" runat="server" DataSourceID="
SqlDataSource1
">
<ItemTemplate>
idPestana:
<asp:Label ID="idPestanaLabel" runat="server" Text='<%# Eval("idPestana") %>'></asp:Label><br />
Titulo:
<asp:Label ID="TituloLabel" runat="server" Text='<%# Eval("Titulo") %>'></asp:Label><br />
Contenido:
<asp:Label ID="ContenidoLabel" runat="server" Text='<%# Eval("Contenido") %>'></asp:Label><br />
Imagen:
<asp:ImageButton ID="ImagenImageButton" runat="server"
Aqui tendras que poner el link de la imagen que quieres mostrar con imageurl
></asp:ImageButton><br />
<br />
PestanaID:
<asp:Label ID="PestanaIDLabel" runat="server" Text='<%# Eval("PestanaID") %>'></asp:Label><br />
</ItemTemplate>
</asp:DataList></div>
</form>
</body>
</html>
Pagina .aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
foreach (DataListItem dli in DataList1.Items)
{
Label Etiqueta = new Label();
Etiqueta.Text = dli.FindControl("ContenidoLabel").ToString();
ImageButton Imagen
Imagen.imageurl =dli.FindControl("ImagenImageButton").imageurl;
if (Etiqueta.Text == "")
{
Lo que quieras hacer"
}
else
{
Lo que quieras hacer"
}
}
}
}
El FindControl lo que hace es buscarte el control (elemento) que tu le especificas entre parentesis dentro del elemento que le indicas (en tu caso el datalist). Y te devuelve todas las propiedades de ese control para que puedas trabajas con ellas.
Lo de las imagenes creo que con un imagebutton tienes suficiente. Me gusta mas el control web qeu el HTML clasico.
Si te sale haciendolo poco a poco luego intenta integrarlo en tu aplicacion, pero primero prueba con una aplicacion de prueba.
Saludos
Maxus
Nuevo Miembro
Mensajes: 9
Re: Lanzar Una Pagina Con Condicion
«
Respuesta #14 en:
Martes 12 de Junio de 2007, 12:36 »
0
Es muy curioso esto.... en fin... no llego a entenderlo.
mira, este es el codigo del CS:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
foreach (DataListItem dli in DataList1.Items)
{
Label Etiqueta = new Label();
Etiqueta.Text = dli.FindControl("ContenidoLabel").ToString();
ImageButton Imagen = new ImageButton();
Imagen.ImageUrl = dli.FindControl("ImagenImageButton").ToString();
if ((Etiqueta.Text == "") || (Etiqueta.Text == null))
{
Imagen.PostBackUrl = "~/url1.aspx";
}
else
{
Imagen.PostBackUrl = "~/url2.aspx";
}
}
}
}
y este el del ASPx
<body>
<form id="form1" runat="server">
<div>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT [idPestana], [Titulo], [Contenido], [Imagen], [PestanaID] FROM [Pestanas] WHERE PestanaID = 3">
</asp:SqlDataSource>
<asp:DataList ID="DataList1" runat="server" DataSourceID="SqlDataSource1" RepeatColumns="5" RepeatDirection="Horizontal">
<ItemTemplate>
idPestana:
<asp:Label ID="idPestanaLabel" runat="server" Text='<%# Eval("idPestana") %>'></asp:Label><br />
Titulo:
<asp:Label ID="TituloLabel" runat="server" Text='<%# Eval("Titulo") %>'></asp:Label><br />
Contenido:
<asp:Label ID="ContenidoLabel" runat="server" Text='<%# Eval("Contenido") %>'></asp:Label><br />
Imagen:
<asp:ImageButton ID="ImagenImageButton" runat="server" ></asp:ImageButton><br />
<br />
PestanaID:
<asp:Label ID="PestanaIDLabel" runat="server" Text='<%# Eval("PestanaID") %>'></asp:Label><br />
</ItemTemplate>
</asp:DataList>
<asp:ImageButton ID="ImageButton1" runat="server" /></div>
</form>
</body>
Lo que no entiendo es porque a la hora de hacer la busqueda en el foreach... tengo que poner en el el FindControl ContenidoLabel ¿no seria Contenido?.... si pongo Contenido, me da el error de antes... y sino, pues no da error.
la parte donde digo esto:
ImageButton Imagen = new ImageButton();
Imagen.ImageUrl = dli.FindControl("ImagenImageButton").ToString();
No hace lo que tiene que hacer... es decir, coger el valor del campo de la base de datos "Imagen" y ponerselo a Imagen.ImageUrl.... Perdona por mi ignorancia, pero es que no entiendo nada esto que esta pasando...
Prove con tu codigo
ImageButton Imagen = new ImageButton();
Imagen.ImageUrl = dli.FindControl("ImagenImageButton").ImageUrl;
Pero no aparece esa propiedad en el control ImagenImageButton.... asi que... pense en hacerle un ToString ... pero el resultado no es lo que espero.
En serio, perdona por mi ignorancia y a ver si conseguimos sacar esto.
Un millon de gracias.
Javier Santamaria
Miembro MUY activo
Mensajes: 142
Re: Lanzar Una Pagina Con Condicion
«
Respuesta #15 en:
Martes 12 de Junio de 2007, 12:57 »
0
Hola Maxus, ya estamos mas cerca.
Dos cosilas:
1. Esto te funciona:
Código: Text
Etiqueta.Text = dli.FindControl("ContenidoLabel").ToString();
y esto no:
Código: Text
Etiqueta.Text = dli.FindControl("Contenido").ToString();
Porque cuando declaras el datalist en la pagina.aspx lo haces asi:
Código: Text
Contenido:
<asp:Label ID="ContenidoLabel" runat="server" Text='<%# Eval("Contenido") %>'></asp:Label>
Donde
Contenido:
es basicamente un literal, es decir, son solo letras; y
<asp:Label ID="ContenidoLabel" runat="server" Text='<%# Eval("Contenido") %>'></asp:Label>
es la label qeu te carga los datos de la BD. Si te fijas en el ID de la label dice "ContenidoLabel". Por eso lo tienes que hacer referencia (en dli.FindControl("Contenido")) como contenidolabel y no como contenido.
Espero que te aclares
2. Para solucionar el tema de la imagen yo haria esto:
Pagina .aspx
Código: Text
Imagen:
<asp:ImageButton ID="ImagenImageButton" runat="server" ></asp:ImageButton><br />
<br />
<asp:Label ID="RutaImagenLabel" runat="server" Text='<%# Eval("Imagen") %>' Visible="False"></asp:Label>
Pagina .aspx.cs
Código: Text
foreach (DataListItem dli in DataList1.Items)
{
Label Etiqueta = new Label();
Etiqueta.Text = dli.FindControl("ContenidoLabel").ToString();
ImageButton Imagen = new ImageButton();
Imagen.ImageUrl = dli.FindControl("ImagenImageButton").ImageUrl;
Label Ruta = new Label();
Ruta.text = dli.FindControl("RutaImagenLabel").text;
if ((Etiqueta.Text == "") || (Etiqueta.Text == null))
{
Imagen.PostBackUrl = "pagina sin contenido";
}
else
{
Imagen.PostBackUrl = "Pagina con contenido" (supongo que ruta.text);
}
}
A ver si de esta solucionamos el problema.
Saludos
Maxus
Nuevo Miembro
Mensajes: 9
Re: Lanzar Una Pagina Con Condicion
«
Respuesta #16 en:
Martes 12 de Junio de 2007, 15:02 »
0
Lo he conseguido
Asi que .. MUCHISSISISISISSMAS GRACIAS TIO
lo he hecho igual que decias tu pero con el evento ItemDataBound
JODER
MUCHAS MUCHAS MUCHAS GRACIAS
Javier Santamaria
Miembro MUY activo
Mensajes: 142
Re: Lanzar Una Pagina Con Condicion
«
Respuesta #17 en:
Martes 12 de Junio de 2007, 15:21 »
0
Me alegro, nos vemos en otra.
Saludos
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
CLR: .Net / Mono / Boo / Otros CLR
»
ASP .NET
(Moderador:
sergiotarrillo
) »
Lanzar Una Pagina Con Condicion