Foros del Web » Programando para Internet » ASPX (.net) »

Hacer referencia a enlace en gridview.

Estas en el tema de Hacer referencia a enlace en gridview. en el foro de ASPX (.net) en Foros del Web. Salu2, tengo un gridview con un templatefield que contiene un enlace a otra página de la siguiente manera: <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" AllowPaging="true" > <Columns> ...
  #1 (permalink)  
Antiguo 24/09/2008, 11:32
 
Fecha de Ingreso: junio-2007
Mensajes: 253
Antigüedad: 16 años, 10 meses
Puntos: 0
Hacer referencia a enlace en gridview.

Salu2, tengo un gridview con un templatefield que contiene un enlace a otra página
de la siguiente manera:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" AllowPaging="true" >
<Columns>
<asp:BoundField DataField="Usuario" HeaderText="" />
<asp:BoundField DataField="Estado" HeaderText="" />
<asp:TemplateField>
<ItemTemplate>
<a id="enlace" href="De.aspx?cod=<%#Server.HtmlDecode(Eval("codig o").ToString()) %>">Enlace</a>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

Yo quisiera saber como puedo hacer referencia al enlace mediante codigo ya que
yo quisera que el enlace no se presentara siempre sino solo cuando el estado en
la fila del usuario sea 'Habilitado' caso contrario ocultar el enlace o
desabilitarlo.

Gracias.
  #2 (permalink)  
Antiguo 24/09/2008, 13:22
Avatar de diegopedro  
Fecha de Ingreso: agosto-2006
Ubicación: Santiago
Mensajes: 120
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: Hacer referencia a enlace en gridview.

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" AllowPaging="true" OnRowDataBound="Grid_RowDataBound"
>
<Columns>
<asp:BoundField DataField="Usuario" HeaderText="" />
<asp:BoundField DataField="Estado" HeaderText="" />
<asp:TemplateField>
<ItemStyle HorizontalAlign="Center" width="1%"/>
</asp:TemplateField>
</Columns>
</asp:GridView>



Protected Sub Grid_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
'por cada fila va insertando el hiperlink aqui controla si deseas que se visualize el hiperlink o no
Dim hlnk As HyperLink = New HyperLink
hlnk.NavigateUrl = ""
hlnk.ImageUrl = "IMG/tu imagen.jpg"
hlnk.ToolTip = "Tu tooltip"
e.Row.Cells.Item(3).Controls.Add(hlnk)
End If
End Sub
__________________
Es facil apretar tornillos, pero lo complejo es saber que tornillo apretar
  #3 (permalink)  
Antiguo 24/09/2008, 16:18
 
Fecha de Ingreso: junio-2007
Mensajes: 253
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Hacer referencia a enlace en gridview.

Gracias por tu respuesta diego ya habia implementado algo similar pero no me funiona, pero date cuenta que me templatefield no tiene un hyperlink sino un enlace de html <a href="">

Protected Sub gvGestion_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvGestion.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
If Convert.ToString(DataBinder.Eval(e.Row.DataItem, "estado")) = "R" Then
e.Row.CssClass = "resaltarfila"
For Each row As GridViewRow In gvGestion.Rows
Dim lnkReprog As HtmlLink = CType(row.FindControl("lnkReprog"), HtmlLink)
lnkReprog.Visible = False
Next
End If
End If
End Sub

por alguna razón no ingresar al for y me sigue presentando el enlace.

Gracias espero alguien me peuda ayudar con esto lo necesito de verdad.
  #4 (permalink)  
Antiguo 25/09/2008, 09:42
 
Fecha de Ingreso: junio-2007
Mensajes: 253
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Hacer referencia a enlace en gridview.

Hola a todos, con respecto hacer referencia a una columna de tipo template con
un enlace html dentro de un gridview ya cambie el tipo de columna por una tipo
hyperlink como les demuestro ababjo:

<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink ID="enlace" runat="server" NavigateUrl='<%# Eval("cod", "ReprogVisita.aspx?cod={0}") %>' Text="Reprogramar"></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>

en problema esta al momento de mandar mas de un parametro, solo me coje uno, si le envio de
esta forma mas de un parametro me da error:

<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink ID="enlace" runat="server" NavigateUrl='<%# Eval("cod,cod_det,cod_est", "ReprogVisita.aspx?cod={0}&detcod={1}&estacod={2}" ) %>' Text="Reprogramar"></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>

DataBinding: 'System.Data.DataRowView' no contiene una propiedad con el nombre 'cod,cod_det,cod_est'.

Si alguien me puede ayudar a pasar mas de un parametro con este tipo de columna se lo agradeceria mucho.
  #5 (permalink)  
Antiguo 25/09/2008, 09:50
Avatar de diegopedro  
Fecha de Ingreso: agosto-2006
Ubicación: Santiago
Mensajes: 120
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: Hacer referencia a enlace en gridview.

Este Metodo trabaja de registro a la vez por eso no te resulta el for


Protected Sub gvGestion_RowDataBound(ByVal sender As Object, ByVal e As
For Each row As GridViewRow In gvGestion.Rows


Cita:
Iniciado por Rodro Ver Mensaje
Gracias por tu respuesta diego ya habia implementado algo similar pero no me funiona, pero date cuenta que me templatefield no tiene un hyperlink sino un enlace de html <a href="">

Protected Sub gvGestion_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvGestion.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
If Convert.ToString(DataBinder.Eval(e.Row.DataItem, "estado")) = "R" Then
e.Row.CssClass = "resaltarfila"
For Each row As GridViewRow In gvGestion.Rows
Dim lnkReprog As HtmlLink = CType(row.FindControl("lnkReprog"), HtmlLink)
lnkReprog.Visible = False
Next
End If
End If
End Sub

por alguna razón no ingresar al for y me sigue presentando el enlace.

Gracias espero alguien me peuda ayudar con esto lo necesito de verdad.
__________________
Es facil apretar tornillos, pero lo complejo es saber que tornillo apretar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:41.