Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   .NET (http://www.forosdelweb.com/f29/)
-   -   Se puede usar datareader con un datagrid (http://www.forosdelweb.com/f29/puede-usar-datareader-con-datagrid-312009/)

Nombela 29/06/2005 02:05

Se puede usar datareader con un datagrid
 
HOla me gusaria saber si se puede enlazar un datareader con un datagrid, para ke cargue los datos el datagrid.

gracias

splinter 29/06/2005 08:35

Usando un SP y un reader
...
...
oComando.Parameters.Add("@opc", SqlDbType.Int) : oComando.Parameters.Item("@opc").Value = opc
oComando.Parameters.Add("@param1", SqlDbType.Char, 12) : oComando.Parameters.Item("@param1").Value = Param1.ToString
oComando.Parameters.Add("@param2", SqlDbType.Char, 12) : oComando.Parameters.Item("@param2").Value = Param2.ToString
MyDR = oComando.ExecuteReader
ElGrid.DataSource = MyDR
ElGrid.DataBind() 'LLENAR EL GRID

wakewakeup 29/06/2005 09:06

sp? que es eso?

splinter 29/06/2005 09:14

Es un ejemplo usando un STORE PROCEDURE , perdon si no fui especifico.

Bueno, tambien lo puedes implementar directamente desde codigo sin usar el proc.almacenado, pero en lo particular tiene mas ventajas usar los proc.almacenados (acceso a datos) que hacerlo todo en el codigo.

saludos

Deulis 29/06/2005 13:53

Hola

Aqui te pongo un ejemplo de como hacerlo, parto de que en la página exista un datagrid llamado grid y el ejemplo te lo puse en VB con conexión a SQL.


'Crear una conexión y abrirla
Dim myConnection As New SqlClient.SqlConnection("tu cadena de conexión")
myConnection.Open()

' Crear el comando
Dim myCommand As New SqlClient.SqlCommand("Select * from CUSTOMERS", myConnection)

' Crear el DataReader
Dim myReader As SqlClient.SqlDataReader

' Con el método ExecuteReader() del comando se traen los datos
myReader = myCommand.ExecuteReader()

' Asignarle al grid el DataReader
grid.DataSource = myReader


Me.DataBind()


' Cerrar la conexión (utomáticamente cerrará el DataReader)
myConnection.Close()

espero te sea útil.
Saludos
Deulis

Rony J. 29/06/2005 17:04

Pues asi de sencillo como te han dicho,
DataGrid.DataSource = DataReader
DataGrid.DataBind()

Yo lo he probado en web forms y funciona perfecto :si: pero una vez, probando no recuerdo que jeje, lo intente pero en una aplicacion windows y esto me dio error.. :pensando:

Es que no se puede hacer en win forms? o seria que me falto algo? El codigo es igual pero sin el DataBind, aunque apenas al asignar el datasource al datagrid me salia un error, no recuerdo exactamente que pero se que decia algo de que el origen de datos del datagrid debia implementar ilistcolecttion..

Alquien lo ha hecho en aplicaciones windows? Saludos y gracias.

Deulis 30/06/2005 12:12

Además se obtiene el mismo error en web si el grid se pagina. No he revizado porque.

xknown 30/06/2005 14:18

Lo primero, el DataBinding en aplicaciones de escritorio exige que haya una copia en memoria de los datos, por otro lado el DataSource tiene que implementar la interfaz IList , según lo dicho anteriormente, no es posible asignar el DataReader como DataSource de un control (el DataReader implementa la Interfaz IEnumerable)

Ahora, sobre la paginación de un DataGrid (web), éste necesita todos los datos que se van a mostrar para calcular las el número de páginas y esas cosas, si deseas más control sobre la paginación, puedes implementar una paginación personalizada...

Saludos

daryl 21/07/2008 22:29

Respuesta: Se puede usar datareader con un datagrid
 
Gracias por abrir este tema me has salvado la vida sino no aprobaba el curso xD !!!!!!!!!!!!!!! mil gracias!!!!

pepeman82 05/10/2009 10:27

Respuesta: Se puede usar datareader con un datagrid
 
Cita:

Iniciado por Deulis (Mensaje 1157882)
Hola

Aqui te pongo un ejemplo de como hacerlo, parto de que en la página exista un datagrid llamado grid y el ejemplo te lo puse en VB con conexión a SQL.


'Crear una conexión y abrirla
Dim myConnection As New SqlClient.SqlConnection("tu cadena de conexión")
myConnection.Open()

' Crear el comando
Dim myCommand As New SqlClient.SqlCommand("Select * from CUSTOMERS", myConnection)

' Crear el DataReader
Dim myReader As SqlClient.SqlDataReader

' Con el método ExecuteReader() del comando se traen los datos
myReader = myCommand.ExecuteReader()

' Asignarle al grid el DataReader
grid.DataSource = myReader


Me.DataBind()


' Cerrar la conexión (utomáticamente cerrará el DataReader)
myConnection.Close()

espero te sea útil.
Saludos
Deulis

Hola!! A mi esa solución no me funcionó, pues utilizo VB.NET (no se si la respuesta sea para ese lenguaje). Sia alguien le interesa, lo solucioné de esta manera:

Dim Conexion As New SqlClient.SqlConnection("tu cadena de conexión")
Conexion.Open()
Dim Comando As New SqlClient.SqlCommand("CONSULTA", Conexion)

Dim DR As SqlClient.SqlDataReader
DR= Comando.ExecuteReader()

Dim DT as new DataTable

DT.Load (DR)

grid.DataSource = DT


La zona horaria es GMT -6. Ahora son las 20:46.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.