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

Obtener el contenido de una celda de un DataGrid en ASP.NET

Estas en el tema de Obtener el contenido de una celda de un DataGrid en ASP.NET en el foro de .NET en Foros del Web. Cómo obtengo el contenido de una celda de un DataGrid en ASP.NET? He intentando de las siguientes maneras: Grid.Items(3).Cells(3).Text Grid.Columns(3).ToString Grid.Columns.Item(3).ToString Hasta hice un bucle ...
  #1 (permalink)  
Antiguo 24/05/2004, 08:22
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Obtener el contenido de una celda de un DataGrid en ASP.NET

Cómo obtengo el contenido de una celda de un DataGrid en ASP.NET?

He intentando de las siguientes maneras:
Grid.Items(3).Cells(3).Text
Grid.Columns(3).ToString
Grid.Columns.Item(3).ToString

Hasta hice un bucle a ver si era el Index #3 que no tenía datos, busque todas las posiciones y no me devuelve el contenido de una celda.

Cómo obtengo ese dato?
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #2 (permalink)  
Antiguo 24/05/2004, 08:42
 
Fecha de Ingreso: mayo-2004
Mensajes: 85
Antigüedad: 20 años
Puntos: 1
yo cojo el contenido de la celda añadiendo una columna seleccionar desde el generador de propiedades. despues lo q hago es esto :

TableCell celda = DataGrid1.SelectedItem.Cells[nºcelda];
string contenidoCelda=celda.Text;

lo q hace esto es q una vez selecciones una fila del dataGrid, obtiene el contenido de la celda.

no se si te servirá. ;)

salu2 !
  #3 (permalink)  
Antiguo 24/05/2004, 09:04
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Lo hice asi:
Código:
lblCentro.Text = Grid.SelectedItem.Cells(3).Text
pero me da el siguiente error:
Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

Que hice mal?
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #4 (permalink)  
Antiguo 24/05/2004, 09:07
 
Fecha de Ingreso: mayo-2004
Mensajes: 85
Antigüedad: 20 años
Puntos: 1
intenta poner lblCentro como una variable global a ver si te sigue dando el mismo error ... a veces pasa.
  #5 (permalink)  
Antiguo 24/05/2004, 09:10
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
el lblCentro es un Label, ahi no hay problemas.
Probé poniendo:
Response.Write(Grid.SelectedItem.Cells(3).Text)

y sigue el mismo problema
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #6 (permalink)  
Antiguo 24/05/2004, 09:11
Avatar de juagarc4  
Fecha de Ingreso: octubre-2003
Ubicación: En casa
Mensajes: 127
Antigüedad: 20 años, 6 meses
Puntos: 0
Holap

Cita:
lblCentro.Text = Grid.SelectedItem.Cells(3).Text
Dos preguntas:
¿Esto lo pones en el evnto SelectedIndexChanged del grid?
¿Tus columnas se crean en tiempo de ejecución, es decir, se generan automáticamente?

Salu2.
__________________
El que pregunta lo que no sabe, es ignorante durante 5 minutos, el que no lo pregunta lo es de por vida (Proverbio Chino)
La tonteria se pone siempre en primera fila, para ser vista. La inteligencia se pones siempre detrás para poder ver. (Alguien lo dijo, seguro)
  #7 (permalink)  
Antiguo 24/05/2004, 09:11
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
RsOfT, la manera normal es hacerlo así:

myGrid.Items(3).Cells(3).Text
si estás usando boundcolumns

Pero tal vez tu tengas en tu grid algun control como una label para mostrar la información y por eso no te regresa nada...

Pero por ejemplo.. si tienes dentro de tu grid algo como ésto:

..
Cita:
..
<ItemTemplate>
<asp:Label Runat=server ID="lbl1 " Text='<%# Container.DataItem("Tu_Campo") %>'>
</asp:Label>
...
...
Y para ver el contenido del mismo puedes hacer ésto:

Cita:
CType(myGrid.Items(3).Cells(3).FindControl("lbl1 "), Label).Text
Y con ello te devolverá el texto que hay dentro de tu label.

Si eso no te funciona escribe como hiciste tu datagrid.

Saludos y suerte
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #8 (permalink)  
Antiguo 24/05/2004, 09:24
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Las columnas las lleno así:
Código:
<asp:ButtonColumn DataTextField="rtCodigo" HeaderText="Ruta"></asp:ButtonColumn>
Mi objetivo es tomar el contenido de una columna para pasarselo como parámetro a otra página para realizar un Select a una tabla con dicho parámetro.
Lo estoy intentando hacer así, porque no encuentro la forma de hacer un link dinámico de este tipo:
Código:
Detalle.aspx?Codigo="Codigo_Dinámico"
Como puedo resolver mi problema?
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #9 (permalink)  
Antiguo 24/05/2004, 10:13
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
Mi objetivo es tomar el contenido de una columna para pasarselo como parámetro a otra página para realizar un Select a una tabla con dicho parámetro.
Eso lo entiendo... pero la columna a la cual quieres obtener su texto de que tipo es.-.. es una boundcolumn, label,etc ??

Aunque tambien puedes por ejemplo usar un hyperlink dentro de alguna columna de tu grid y que cargue el Código correspondiente.

Ejemplo:
Cita:
<asp:templatecolumn>
<itemtemplate>
<asp:hyperlink runat="server" navigateurl='<%# DataBinder.Eval (Container.DataItem,"Tu_campo_Código", "Detalle.aspx?Codigo ={0}" ) %>' ID="Hyperlink1">
<%# DataBinder.Eval ( Container.DataItem, "Tu_campo") %>
</asp:hyperlink>
</itemtemplate>
</asp:templatecolumn>
Espero que ahora si funcione..
  #10 (permalink)  
Antiguo 24/05/2004, 12:14
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Excelente, ahora si funciona...

Ahora quiero que me respondas unas preguntitas para poder entender bien lo que has hecho.

1) Por qué tengo que usar una columna template para hacer eso? intenté hacerlo de esta forma y me dio error:
Código:
<asp:HyperLinkColumn NavigateUrl='<%# DataBinder.Eval (Container.DataItem,"ocCodigo", "Detalle.aspx?Codigo ={0}" ) %>'></asp:HyperLinkColumn>
2) Para que es el DataBinder?
3) Porque cuando pongo DataBinder más punto "DataBinder." no me despliega la ayuda?
4) que significa "Eval"?
5) Qué significa el Container?

Muchas gracias por tu ayuda RootK, espero tus bien recibidas respuestas. Espero que puedas contentarme las 5 preguntas...
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #11 (permalink)  
Antiguo 24/05/2004, 12:42
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
Por qué tengo que usar una columna template para hacer eso?
Porque cuando deseas incluir un control que no sea un databound dentro de tu grid usas ItemTemplates para que pongas linkbuttons, labels, tablas, y todo lo que quieres mostrar en una determinada columna.

Cita:
intenté hacerlo de esta forma y me dio error:
Está dentro de un template column..?? y ocCodigo es el nombre de tu campo en la BD ??

Cita:
Para que es el DataBinder?
Qué significa el Container?
Te paso un link para que veas un ejemmplo de mas o menos lo que estás haciendo

http://www.c-sharpcorner.com/Code/20...LinkColumn.asp

Cita:
que significa "Eval"?
Nos sirve para dar formato a campos en un datagrid, datalist, repeater , por ejemplo para cambiar el formato de fecha., etc.-

Cita:
Porque cuando pongo DataBinder más punto "DataBinder." no me despliega la ayuda?
Porque estás en modo Design (HTML) y no en codebhind


Saludos y espero te haya quedado mas claro
  #12 (permalink)  
Antiguo 24/05/2004, 13:05
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Cita:
Está dentro de un template column..?? y ocCodigo es el nombre de tu campo en la BD ??
Claro que no, porque supongo que si existe un tipo de columna para link, me estaba preguntando porque utilizar template?, pero en la página que me diste hay una ejemplo de hacer el tipo de link dinámico sin usar template, solo con la columna de Link, "HyperLinkColumn"

Cita:
Nos sirve para dar formato a campos en un datagrid, datalist, repeater , por ejemplo para cambiar el formato de fecha., etc.-
Me podrías dar un ejemplo de formatear una fecha para que salga solamente fecha. Lo que pasa es que el campo fecha me está trayendo la fecha y la hora.
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #13 (permalink)  
Antiguo 24/05/2004, 13:31
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Usando BoundColumns:

Cita:
<asp:BoundColumn DataField="cDate" DataFormatString="{0:dd/MM/yyyy}" />
Usando databinder.eval con un label:

Cita:
<asp:Label id="cDate" runat="server" Text='<%# DataBinder.Eval (Container, "Campo_Date", "{0:dd/MM/yyyy}") %>'>

Saludos
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 00:37.