lunes, 31 de mayo de 2010

ASP.NET – Asignar valor a propiedad del control de servidor desde el lado aspx

server_controls Por ejemplo, cómo hago para que la propiedad Text de un control TextBox reciba el valor de un queryString o de una variable declarada en el código de servidor? (desde el lado aspx).
o cómo hago para que la propiedad NavigateUrl de un control hyperlink reciba el valor del queryString y se concatene con una url (desde el lado aspx)?
A ver si lo intentas antes de ver la solución. Pero como ya dije: la asignación debe hacerse desde el lado aspx por si acaso ah? y no desde el lado del servidor, sino qué chise tendría no?
En realidad este tema es bastante simple pero por lo que veo causa mucha confusión, así que vamos a intentar ser claros de una buena vez.
Este sería el código para el texbox:
<asp:TextBox ID="TextBox1" Text='<%# Request.QueryString("id")%>' runat="server"></asp:TextBox>

y éste para el hyperlink:
<asp:HyperLink ID="HyperLink1" NavigateUrl='<%# string.format("~/OtraPagina.aspx?id={0}", Request.QueryString("id")) %>' runat="server">Click aquí</asp:HyperLink>
Lo que hice fue:
  1. envolver en comillas simples el valor para la propiedad
  2. usar <%# …. %> en lugar de <%= …. %>
  3. En el Page_Load de la página debo poner: Me.DataBind() si es VB.NET y this.DataBind(); para C#.
Y esto también aplica en el caso de que los controles estén dentro de un gridview u otro control.

Ojo, el código aspx está en VB.NET, hay algunas diferencias con C#, por ejemplo las llamadas al queryString debe ser con corchetes: Request.QueryString["id"]

Espero que les sea de utilidad ;

No hay comentarios.: