You are on page 1of 8

Paginacin ASP.

NET C(#)/SQLServer
Introduccin y casos de uso

Por Cravero Marcos Gabriel

15 de diciembre de 2006

1 Comentarios

Scripts ASP.NET

Comenzamos este manual con una pequea introduccin y en que


casos usaremos esta paginacin.
Explicaremos como ir mostrando en una pagina de a n registros extrados de una base
de datos de N, siendo N muy grande. Para esto se tendr un botn siguiente que
mostrara los siguientes n registros a partir del ltimo mostrado en la pgina, y un botn
anterior que mostrara los anteriores n registros a partir del primer registro mostrado en
la pgina.
Adems podremos borrar k registros de los n mostrados en una pgina, siendo k menor
que n. Podremos seleccionar los registros que queremos borrar y tendremos un botn
borrar, la aplicacin buscara los registros seleccionados en la pgina y los eliminara de
la base de datos.
Seguiremos una metodologa similar a COMET, usando UML, para especificar el
problema y mostrar el diseo de la arquitectura. Algunos mtodos los derivaremos
usando especificaciones algbricas y ternas de Hoare.
Siguiendo esta metodologa encontramos las siguientes clases: Interfaz de entrada de
Cliente, Entity Base de Datos, Estado, Numero de Pagina, Objeto Control Pagina,
Objeto Control Generar Pagina, Entity Generar Pagina, Interfaz de salida Cliente.
Mostramos que el diseo conseguido tiene bajo acoplamiento entre las clases y alta
cohesin de sus elementos y adaptabilidad a cambios.
Por ultimo implementaremos la solucin en asp.net (c#)/sql-server, y daremos el cdigo
completo de la aplicacin.
Casos de uso
1- Inicializar
Cuando el usuario ingresa a la pagina, esta muestra los primeros n registros de la base
de datos.

1. El usuario ingresa el nombre de la pagina en el navegador

2. El sistema busca los primeros n registros en la base de datos


3. El sistema mostra los registros de la primer pagina.

Del analisis de este caso de uso encontramos los objetos:

Objeto control pagina, que maneja la logica de el caso de uso.

Objeto entidad base de datos, que nos permite una abstracion de la base de datos.

Valor del primer y ultimo registro mostrado.

Numero de pagina mostrada

Interfaz de salida, encargado de mostrar los registros, nos permite abstraernos de los detalles del
html.

2- Siguiente
Cuando el usuario preciona el boton siguiente, el sistema mostrara los siguientes n
registros a partir del ultimo registro mostrado en la pagina.
Precondicion: esta cargada la pagina.

1. El usuario presiona siguiente


2. El sistema busca en la base de datos los siguientes registros a partir del ultimo registro mostrado
3. El sistema incrementa al numero de pagina
4. El sistema muestra los registros encontrados

Del analisis del caso de uso encontramos los siguientes objetos

Objeto control javascript, maneja la logica del cliente cuando se presiona el boton siguente.

Objeto entity, valor del ultimo registro mostrado

Objeto Entity, base de dato

Numero de pagina

Interfaz salida cliente, encargada de mostrar los registros.

3- Anterior
Parecido al caso de uso siguiente, se deja como ejercicio.
4- Borrar
El usuario selecciona k registros de los que se estan mostrando y preciona borrar. El
sistema borra los los registros seleccionados de la base de datos.
Precondicion: esta cargada la pagina

1. El usuario selecciona algunos registros


2. El usuario preciona borrar
3. El sistema busca los registros seleccionados y los borra de la base de datos
4. El sistema busca en la base de datos n registros a partir del primero no borrado
5. El sistema muestra los registros

Del analisis de este caso de uso de uso encontramos:

Un objeto control javascript, encargado de manejar la logica en el cliente

Un objeto control que maneja la logica en el servidor

Un objeto interfaz de entrada, permite abstraernos de los detalles del html de la pagina

Un objeto entidad, la base de datos

Autor

Diagramas de clases y signatura


de los mtodos de los objetos
Pasamos a especificar todos los mtodos que vamos a
utilizar, as como un esquema de funcionamiento y
mtodos del script.
Diagrama de Clases

Signatura de los metodos de todos los objetos


Este objeto abstrae la logica de la aplicacion en el servidor, recibe todos los
eventos que envia el cliente (siguiente, anterior, borrar) y realiza las acciones
apropiadas.
namespace ObjetoControl {
public class Pagina:System.Web.UI.Page {
protected override void OnLoad(System.EventArgs e) {
}}

Este objeto abstrae todos los detalles de la interfaz de entrada (el html usado,
de formulario, etc). Es usada por la clase control pagina, el metodo borrar de
esta clase, nos da el identificador del item a borrar, que luego se lo pasaremos
al objeto de base de datos
namespace InterfazEntrada {
public class Cliente {
public int Borrar() { }
}}

Este objeto abstrae todos los detalles de la base de datos, es usado por la

clase control pagina, al metodo borrar solo le pasamos el identificados del item
a borrar y este lo borra de la base de datos.
namespace Entity {
public class DataBase {
public void Cerrar() {}
public void Borrar(int numeroMensaje) {
CREATE PROCEDURE BorrarMensaje
@numeroMensaje int
AS
DELETE FROM Mensajes WHERE numeroMensaje =@numeroMensaje
}
}}

Es usado por la clase control pagina, el objeto de esta clase mantiene el


numero de pagina que se esta mostrando, se incrementa cuando se envia con
el evento siguiente y se decrementa con el evento anterior.
namespace Entity {
public class NumeroDePagina {
public void Primera() {}
public void Siguiente() {}
public void Anterior() {}
public int Ver {}
public bool EsPrimera {}
public bool EsUltima {}
}}

Esta clase se abstrae de los detalles de cmo visualizar los resultados. Si se


realizan cambios en como se visualizaran la unica clase que tambien se tiene
que modificar es la clase interfaz de entrada.
namespace InterfazSalida {
public class Cliente {
public void DataView(System.Data.DataView dataView) {}
}}

Esta clase abstrae todos los detalles para brindar los siguientes n o los
anteriores n registros. Usa las clase entidad base de datos para obtener los
registrol y una clase estado que conserva el ultimo registro y el primer registro
mostrado
namespace ObjetoControl {
public class GenerarPagina {
public void Inicializar() {}
public System.Data.DataView Siguientes() {}
public System.Data.DataView Anteriores() {}
}}

Abstrae los detalles de la base de datos, es usado por el objeto control generar
pagina.
namespace Entity {
public class DataBaseGeneraPagina {
public void SeleccionarMenor() {
"SELECT TOP 8 numeroMensaje, deNombreUsuario, asuntoMensaje,
diaHoraMensaje
"+
"FROM Mensajes "+
"WHERE "+
"(numeroMensaje > @numeroMensaje) and "+
"ORDER BY numeroMensaje ASC";
}
public void SeleccionarMayor() {
"SELECT TOP 8 numeroMensaje, deNombreUsuario, asuntoMensaje,
diaHoraMensaje
"+
"FROM Mensajes "+
"WHERE "+
"(numeroMensaje < @numeroMensaje) and "+
"ORDER BY numeroMensaje DESC"; }
}}

Esta clase es usado por el objeto generar pagina. Mantiene el primer y ultimo
registro mostrado en la pagina.
namespace Entity {
public class Estado {
public int PrimerRenglon {}
public int UltimoRenglon {}
}}

Propiedades del diseo


El diseo tiene bajo acoplamiento entre las clases definidas y alta coecion entre
los elementes de las clases, esto permite realizar cambios en una clase sin
tener que preocuparse de las demas, por ejemplo puedo cambiar la estructura
de la base de datos y solo tengo que modificar el objeto entidad base de datos.
Los unicos objetos que estan un poco mas acoplado son la interfaz de entrada
con la de salida, por ejemplo si realizao cambios en la interfaz de salida,
seguramente voy a tener que modificar la interfaz de entrada.
Codigo de las siguientes clase
Objeto control pagina: Maneja todos los eventos enviados por el cliente:
inicializar, borrar, siguiente, anterior. Se encarga de la logica de la aplicacin.
Objeto control generar Pagina: es llamado por el objeto control pagina. Se
encarga de obtener de la base de dato los siguites o anteriores registros. Para
esto tiene mantiene como estado cual es el primer y el ultimo registro que
mostro en la llamada anterior.
Objeto interna Entrada: es llamado por el objeto control pagina, para obtener el
id del item a borrar. Abstrae todos los detalles de cmo son mostrados los
datos.

You might also like