Foros del Web » Programación para mayores de 30 ;) » .NET »

Obtener campo link de un datagrid en asp.net

Estas en el tema de Obtener campo link de un datagrid en asp.net en el foro de .NET en Foros del Web. Hola, Tengo un datagrid que muestra una lista de artículos, las columnas son: Referencia, Descripción, Cantidad, Precio, Añadir. La columna añadir es un imagebutton. La ...
  #1 (permalink)  
Antiguo 11/03/2005, 09:46
 
Fecha de Ingreso: febrero-2005
Mensajes: 30
Antigüedad: 20 años, 1 mes
Puntos: 0
Obtener campo link de un datagrid en asp.net

Hola,

Tengo un datagrid que muestra una lista de artículos, las columnas son:

Referencia, Descripción, Cantidad, Precio, Añadir.

La columna añadir es un imagebutton.
La columna Referencia es un enlace que cuando lo pulsas se abre otra página con un parámetro código el cual se recoge de la misma tabla, es decir, lo que se muestra en referencia es el campo Referencia de la base de datos, pero lo que se pasa como parámetro en el enlace es el campo Codigo.

Pues bien, necesito leer de la columna referencia cual es el campo código cuando le doy al botón añadir.

Si leo la propiedad .cells(0).text me devuelve la referencia.

¿Alguien sabe como hacer esto?

Gracias y un saludo.
  #2 (permalink)  
Antiguo 11/03/2005, 10:02
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 23 años, 1 mes
Puntos: 50
En tu imagebutton pedes agregarle la propiedad CommandName para enlazarlo al evento ItemComman del grid y con ello obtener el valor que necesitas.. ejemplo.

Cita:
<asp:DataGrid id="DataGrid1" runat="server".....>
...
....
<asp:TemplateColumn>
<ItemTemplate>
<asp:ImageButton CommandName="Obtener" Runat=server ImageUrl="image.gif"></asp:ImageButton>
</ItemTemplate>
...
..
Y en el codebehind.. pondrías ésto:

Cita:
Private Sub DataGrid1_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs ) Handles DataGrid1.ItemCommand
If e.CommandName = "Obtener" Then
Dim s As String = e.Item.Cells(0).Text
'Aqui haces lo que quieras con ese campo
End If
End Sub
Espero que sea lo que buscas..

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 11/03/2005, 10:42
 
Fecha de Ingreso: febrero-2005
Mensajes: 30
Antigüedad: 20 años, 1 mes
Puntos: 0
Hola,

Eso lo tengo ya todo hecho, el problema es que si hago:

Dim s As String = e.Item.Cells(0).Text

Lo que hago es recoger el valor de lo que muestra, es decir, la referencia, y lo que yo quiero, es recoger el código, que es lo que se pasa como parámetro cuando hago click en el enlace.
Cuando hago click en el enlace, se pasa: verarticulo.aspx?id={0}

Eso es lo que tengo puesto en datafieldurl, para que pase el código, no la referencia.

Una referencia sería: Ref001, que corresponde al artículo con código 16542.

No se si me he explicado bien, gracias y un saludo.
  #4 (permalink)  
Antiguo 11/03/2005, 10:48
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 23 años, 1 mes
Puntos: 50
mm.. es que no se si estas hablando de un linkbutton o un hyperlink (que son 2 cosas distintas..)

Tienes algo así en tu hyperlink:
Cita:
<asp:HyperLinkColumn HeaderText="ID" DataNavigateUrlField="campo_ID"
DataNavigateUrlFormatString="verarticulo.aspx?id={0}"
DataTextField="ID"></asp:HyperLinkColumn>
O si no es eso explicate un poco mas.
  #5 (permalink)  
Antiguo 11/03/2005, 11:37
 
Fecha de Ingreso: febrero-2005
Mensajes: 30
Antigüedad: 20 años, 1 mes
Puntos: 0
Hola,

Tengo esto exactamente:

<asp:HyperLinkColumn Target="_new" DataNavigateUrlField="CODIGO" DataNavigateUrlFormatString="verarticulo.aspx?codi go={0}"
DataTextField="REFERENCIA" HeaderText="REFERENCIA"></asp:HyperLinkColumn>

Yo, lo que pretendo leer cuando pulso el botón imagebutton es esto:

DataNavigateUrlField="CODIGO"

Si utilizo:

...fields(0).text, lo que leo es esto:

DataTextField="REFERENCIA"

¿Como puedo leer el codigo?

Espero haberme explicado esta vez.

Muchas gracias y un saludo.
  #6 (permalink)  
Antiguo 11/03/2005, 12:45
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 23 años, 1 mes
Puntos: 50
Creo que mas o menos te voy entendiedo (es que ando con mucho trabajo y ando alucinando un poco.. jeje)

Me pregunto... no sería mas fácil que le pasaras el argumento a tu imagen y con ello ya saber lo que tiene...

algo así:

...
...
<asp:ImageButton Runat=server ID=referenceButton CommandArgument='<%# Container.DataItem("REFERENCIA")%>' ImageUrl="imagen.gif"></asp:ImageButton>
...
..

Y listo... en tu evento puedes cachar el CommandArgument...

Ahora si ??
  #7 (permalink)  
Antiguo 11/03/2005, 14:39
 
Fecha de Ingreso: febrero-2005
Mensajes: 30
Antigüedad: 20 años, 1 mes
Puntos: 0
Hola,

No :)

El imagebutton únicamente lo utilizo para añadir una fila al carrito de compra. No tiene nada que ver con mi duda, :)

Aquí está el evento que utilizo:

Private Sub grdArticulos_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs ) Handles grdArticulos.ItemCommand
Dim DR As DataRow
Dim _item As DataGridItem
Select Case e.CommandName
Case "añadir"
_item = grdArticulos.Items(e.Item.ItemIndex)
Dim txCantidad As TextBox = CType(_item.FindControl("txtCantidad"), TextBox)
DR = Carro.NewRow
DR(0) = _item.Cells(0).Text ' aquí!
DR(1) = txCantidad.Text ' Cantidad
DR(2) = Val(_item.Cells(4).Text) ' Precio
Carro.Rows.Add(DR)
ActualizarCarro()
End Select

End Sub

Donde cice aquí!, es donde quiero leer el código del artículo en vez de la referencia, quiero leer el código por que la aplicación podría tener artículos con la misma referencia.

¿Ahora si?

Gracias y un saludo.
  #8 (permalink)  
Antiguo 13/03/2005, 06:20
 
Fecha de Ingreso: febrero-2005
Mensajes: 30
Antigüedad: 20 años, 1 mes
Puntos: 0
Hola,

Gracias por intentarlo RootK, pero al final, como me corre un poco de prisa y me quedan muchas dudas por preguntar, me he decidido por arreglarlo de forma pseudochapuza: crear otra columna código con visible = false.

Gracias de todos modos y un saludo.
  #9 (permalink)  
Antiguo 16/03/2005, 04:38
 
Fecha de Ingreso: marzo-2005
Mensajes: 1
Antigüedad: 20 años
Puntos: 0
Hola;

podrías utilitzar la propiedad DataKeyField del control DataGrid para almacenar el valor del CODIGO en ella, sin tener que crear una columna Código invisible; lo que hace es guardar, por cada ítem, el valor que contiene su CODIGO, siempre y cuando este nombre sea una columna existente en el DataSource que vinculas al DataGrid.

  #10 (permalink)  
Antiguo 10/12/2007, 17:57
 
Fecha de Ingreso: diciembre-2007
Mensajes: 1
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Obtener campo link de un datagrid en asp.net

Un poco tarde la respuesta pero talvez le sirva a otro !

A mi me paso exactamente el mismo problema.

La forma de obtener el valor que se muesta en el HyperLinkColumn es

((System.Web.UI.WebControls.HyperLink)e.Item.Cells[0].Controls[0]).Text


ByeBye
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 14:00.