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

No me funciona el DataReader?

Estas en el tema de No me funciona el DataReader? en el foro de .NET en Foros del Web. Hola amigos del foro. Aparentemente algo muy sencillo quiero preguntar, pero me sorprendio hasta que no lo hice. No me funciona la paginacion del datagrid ...
  #1 (permalink)  
Antiguo 26/04/2005, 21:47
Avatar de davidalcaraz  
Fecha de Ingreso: abril-2005
Mensajes: 34
Antigüedad: 19 años
Puntos: 0
Pregunta No me funciona el DataReader?

Hola amigos del foro. Aparentemente algo muy sencillo quiero preguntar, pero me sorprendio hasta que no lo hice. No me funciona la paginacion del datagrid utilizando datareader.
Bien tengo el datagrid con la propiedad Permitir paginacion checkeada y y funciona de maravilla utilizando un SqlDataAdapter y un Dataset(Como muestro en el segundo segmento de codigo. Pero al Implementarlo con datareader(como el primer segmento de codigo) me manda este error:

AllowCustomPaging must be true and VirtualItemCount must be set for a DataGrid with ID DataGrid1 when AllowPaging is set to true and the selected datasource does not implement ICollection.

Efectivamente si modifica la propiedad AllowCustomPagin ya no manda error pero tengo que programar la paginacion manualmente.

ALGUIEN PODRIA INDICARME SI EFECTIVAMENTE NO ME VA A FUNCIONAR ASI CON EL DATAREADER O SI HAY OTRA MANERA DE IMPLEMENTAR LA PAGINACION.?

----------------------------------------------------------------
CON DATAREADER

Public Conn As New SqlConnection("data source...
Dim dr As SqlDataReader
Dim SqlCommando As New SqlCommand("Select * from Customers", Conn)
Conn.Open()
dr = SqlCommando.ExecuteReader()
DataGrid1.DataSource = dr
DataGrid1.DataBind()
Conn.Close()
----------------------------------------------------------------
CON DATASET
Dim ds As New DataSet()
Dim da As New SqlDataAdapter()
da.SelectCommand = New SqlCommand()
da.SelectCommand.CommandText = "Select * from Customers"
da.SelectCommand.Connection = Conn
da.Fill(ds, "tabla")
DataGrid1.DataSource = ds
DataGrid1.DataBind()
Conn.Close()
----------------------------------------------------------------
En el page index change puse esto...
DataGrid1.CurrentPageIndex = e.NewPageIndex
RellenarCustomers()
  #2 (permalink)  
Antiguo 27/04/2005, 00:39
 
Fecha de Ingreso: abril-2003
Mensajes: 606
Antigüedad: 21 años
Puntos: 2
Con un DataReader no se puede por que el DR es Forward Only es decir lo lees de jalon y no puedes ir por bloques como sucede cuando paginas con un DataSet.

Lo que podrías hacer es implmentar tu propia paginación que te traiga únicamente el bloque que requieres por medio de un Stored Procedure, ahora no cuento con el link donde viene el ejemplo pero podrìas buscarlo...
  #3 (permalink)  
Antiguo 27/04/2005, 09:20
Avatar de HenrydeSousa  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 300
Antigüedad: 19 años, 7 meses
Puntos: 2
aca te dejo esta url, tal vez te pueda servir
http://www.netveloper.com/contenido.aspx?IDC=63&IDP=0
  #4 (permalink)  
Antiguo 27/04/2005, 09: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
De hecho hace tiempo hice una aplicacion que precisamente paginaba usando un datareader.., voy a darme un tiempo para despues publicarla en las faqs.

De todas formas en las faq´s hay un ejemplo de un custom paging, creo que se llama "moverse entre registros"

Cualquier cosa por aqui andamos..

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

Exentrit - Soluciones SharePoint & Net
  #5 (permalink)  
Antiguo 28/04/2005, 13:17
Avatar de davidalcaraz  
Fecha de Ingreso: abril-2005
Mensajes: 34
Antigüedad: 19 años
Puntos: 0
Bien pero entonces ustedes utilizan Datasets? o que hacen? Por un lado se supone que le pega al al performance el uso delos Datasets pero por otro y aunque no dudo que se pueda codificar la paginacion del datareader te requiere un esfuerzo mayor se supone que esto del .NET es para facilitar las cosas o no? (probablemente exagero pero considerando que para cada cosa simple tengo que estar investigando y preguntado teminas por invertir tiempo de mas que finalmente es $$$)

Alguna otra sugerencia de que debo hacer?
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 13:30.