CLR: .Net / Mono / Boo / Otros CLR > ASP .NET
Lanzar Una Pagina Con Condicion
Javier Santamaria:
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 :P ).
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:
Gracias pero sigo sin saber que poner :brickwall:
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. :comp:
Javier Santamaria:
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:
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:
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
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa