Hola.

Si el resultado de tu consulta es un set de datos igual para todos los
usuarios o el resultado de una consulta simple sobre una sola tabla o dos
tablas (por ejemplo, Ciudades del mundo filtradas por País) lo que podés
hacer es llenar un dataset, especificándole un index donde convenga y
colocarlo disponible para todos (por ejemplo, en un singleton, cache,
application, etc) y que todas las grillas consulten ahí.

 

Si por el contrario tu set de datos es el resultado de una consulta compleja
con cinco JOINS entre cinco tablas de 50.000 registros cada una, no hagas
eso.

 

En ese caso, paginar en la base es una buena opción (te recuerdo que en este
caso vas a estar rehaciendo la consulta en cada petición también). Yo no lo
estoy haciendo porque el método que conozco es algo específico a MS SQL
Server (sobretodo en 2005 que es nativo) tirándole un índice a la consulta
para paginar y estoy tratando que las clases de mi biblioteca tengan un
acceso a datos más portable a distintos motores.

 

Lo que estoy haciendo es hacer la consulta cada vez y devolver un set de
resultados limitado (por ejemplo las primeras 5000 coincidencias) y paginar
en base a ellos. En realidad traigo las primeras 5001 y pregunto si hay más
de 5000 registros. En ese caso le aviso al usuario que se excluyeron algunos
resultados de la búsqueda y le recomiendo que refine la misma.

 

Saludos   

Leonardo

 

  _____  

De: Diego Jancic [mailto:[EMAIL PROTECTED] 
Enviado el: Miércoles, 07 de Marzo de 2007 12:20 p.m.
Para: [email protected]
Asunto: [puntonet] Paginar el Datagrid

 

Hola,

No esta mal que en cuando cambies la pagina rehagas la consulta... pensa que
si lo guardas en la Session estas consumiendo memoria en el Server y si lo
guardas en el Viewstate estas incrementando el trafico en la red... Para
evitar hacer 2 consultas cuando cambias de pagina (una en el page_load y
otra en el PageIndexChanged) lo que podes hacer es simplemente hacer un
DataBind() en el evento PageIndexChanged... 

En caso de que tengas mucha informacion podrias paginar la informacion por
sql server, pero ademas de ser complicado no suele ser util ya que al
usuario le resulta imposible leer 50 mil registros (Eso me lo enseño Jose
Mariano Alvarez ;) )... 

Supongo que deberias pensar en tu escenario y decidir que te conviene.. si
estas en una LAN no muy sobrecargada y el servidor es una pentium 2, lo mas
probable es que te convenga guardar la info en el viewstate...

Caso contrario, si tus clientes se conectan mediante Modem a un servidor muy
bueno, rehace la consulta o guarda la info en Session, pero nunca guardes en
Viewstate...

 

Saludos,

Diego

 

On 3/7/07, Marcelo P <[EMAIL PROTECTED]> wrote: 

Buenos días listeros

Me encuentro con una aplicación ASP.NET <http://asp.net/>  que tiene un
Datagrid , y posee paginación. El tema es que en el evento PageIndexChanged
, va a una función que trae los datos , por ende cada vez que pagina , si
bien lo hace correctament, vuelve a realizar toda la consulta. Como se
podría evitar esto ? , yo pense en poner en una variable se session el
dataset , asi lo lleno una sola vez y luego por cada paginación solo lo
haría sobre el dataset, pero no se como hacerlo o capaz que hay otra forma. 
Saludos

  _____  

Preguntá. Respondé. Descubrí.
Todo lo que querías saber, y lo que ni imaginabas,
está en Yahoo! Respuestas (Beta).
Probalo ya! <http://ar.answers.yahoo.com/>  

 

Responder a