Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > .NET
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-09-2007
Mariolarr Mariolarr is offline
Miembro
 
Registrado: jul 2007
Posts: 45
Poder: 0
Mariolarr Va por buen camino
Paginación datagrid

Hola de nuevo, jeje la verdad es que el foro me está cundiendo .
Ahí va la pregunta: Tengo un datagrid paginado, muestra correctamente el contenido pero cuando selecciono otra página me muestra la tabla sin contenido y en el pie está seleccionada el número de página que había pulsado. En el evento PageIndexChanged tengo el siguiente código:
Código Delphi [-]
  
DataGrid1.CurrentPageIndex := e.NewPageIndex;
DataGrid1.DataSource:=CatalogoReader;
DataGrid1.DataBind;

Y la carga inicial del datagrid se hace mediante el siguiente código, donde la variable CatalogoReader : BdpDataReader; está declarada de forma global:

Código Delphi [-]
var
  Trans : BdpTransaction;
  Cadena: BdpCommand;
  sSQL: string;
  //CatalogoReader : BdpDataReader;
  i: integer;
begin

  Trans := MyConeccion.BeginTransaction();
Art_Codi = ''1000VIT''';
  sSQL := 'select Art_Codi, Art_Desc, Art_EPV_Coste from Articulos where Art_PVP1 = ''' + '0' + '''';
  Cadena := BdpCommand.Create(sSQL, MyConeccion, Trans);
  CatalogoReader := Cadena.ExecuteReader;


  DataGrid1.VirtualItemCount := 15000;
  DataGrid1.DataSource:=CatalogoReader;
  DataGrid1.DataBind;


  Trans.Commit;
  Trans.Free;

Espero vuestras respuestas porque realmente llevo tiempo con esto.
Gracias anticipadas
Responder Con Cita
  #2  
Antiguo 14-09-2007
Avatar de __hector
[__hector] __hector is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 1.075
Poder: 22
__hector Va por buen camino
El codigo que llena la variable se ejecuta cada vez que cargas la pagina? Lo tienes en el page_load ?

Me parece que en el segundo bind, el datasource no tiene datos.
__________________
Héctor Geraldino
Software Engineer
Responder Con Cita
  #3  
Antiguo 17-09-2007
Mariolarr Mariolarr is offline
Miembro
 
Registrado: jul 2007
Posts: 45
Poder: 0
Mariolarr Va por buen camino
Si lo pongo en el load ma carga los 10 primeros elementos de nuevo y si no le indico que solo se me cargue una vez es cuando me la deja en blanco.
Responder Con Cita
  #4  
Antiguo 17-09-2007
Avatar de __hector
[__hector] __hector is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 1.075
Poder: 22
__hector Va por buen camino
Tienes que colocar el codigo que llena el datasource en un método aparte, y en el evento pageindexchanged en el que le estas asignando el nuevo numero de pagina, deberás llamar el metodo que llena el datasource antes de hacer databind, pues cada vez que hagas un databind el datasource debe tener datos, siempre.

Como es una ejecución desconectada, entre cada llamada el datasource no mantiene los registros, salvo que lo metas en alguna variable de sesión, aplicacion, cache o en el viewstate de la pagina, y según explicas tu caso, no creo que sea necesario hacer nada de eso.

Suerte!
__________________
Héctor Geraldino
Software Engineer
Responder Con Cita
  #5  
Antiguo 18-09-2007
Mariolarr Mariolarr is offline
Miembro
 
Registrado: jul 2007
Posts: 45
Poder: 0
Mariolarr Va por buen camino
Muchas gracias por tu atención, aqui te muestro el contenido del codigo con las modificaciones que me has dicho:
Procedimiento PageIndexChange
Código Delphi [-]
  CambiarPaginaAux;

  DataGrid1.CurrentPageIndex :=e.NewPageIndex;
  DataGrid1.DataBind;

  CatalogoReader.Close;
  Trans.Commit;
  Trans.Free;

Procedimiento CambiarPaginaAux, donde las variables Trans y CatalogoReader son globales.
Código Delphi [-]
var
  Cadena: BdpCommand;
  sSQL: string;
begin
  Trans := MyConeccion.BeginTransaction();

  sSQL := 'select Art_Codi, Art_Desc, Art_EPV_Coste from Articulos where Art_PVP1 = ''' + '0' + '''';
  Cadena := BdpCommand.Create(sSQL, MyConeccion, Trans);
  CatalogoReader := Cadena.ExecuteReader;

  DataGrid1.VirtualItemCount := 15000;
  DataGrid1.DataSource:=CatalogoReader;
Haciendo esto, me señala el número de la página pulsada como si estuviera situado en él, pero el contenido es el de la página 1.

Gracias
Responder Con Cita
  #6  
Antiguo 18-09-2007
Avatar de __hector
[__hector] __hector is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 1.075
Poder: 22
__hector Va por buen camino
- Pon el databind como parte del metodo CambiarPaginaAux
- cambia el orden de ejecucion, colocando la llamada al metodo justo despues de cambiar el indice de la pagina
- verifica que los registros entre paginas deben ser diferentes en la tabla

Código:
  DataGrid1.CurrentPageIndex :=e.NewPageIndex;
  CambiarPaginaAux;

  // estas lineas no deberian ser parte de este metodo
  CatalogoReader.Close;
  Trans.Commit;
  Trans.Free;
 // fin comentario
__________________
Héctor Geraldino
Software Engineer
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
paginacion, problemas... aquosoft SQL 0 01-11-2006 17:44:27
Paginacion con DBGRID Coco_jac Varios 6 12-11-2005 18:46:50
Ayuda con paginacion warlordbl Impresión 2 04-11-2005 20:07:33
realizar paginacion alachaise PHP 1 14-04-2005 19:58:09
Paginación DataGrid en ASP.NET mamen .NET 2 28-09-2004 13:21:47


La franja horaria es GMT +2. Ahora son las 23:13:22.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi