Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Biblioteca
Biblioteca
Versin 2.7 (Visual Studio 2005) MI. Jess Muoz Torres jesus@desarrolla.com.mx Microsoft Certified Proffesional on Windows & Web applications MCP | MCTS | MCAD | MCT Desarroll@
Introduccin ............................................................................................................................ 2 El sistema................................................................................................................................ 2 El sitio Web ............................................................................................................................ 2 Aspecto general de la aplicacin ............................................................................................ 4 Creacin de una pgina maestra ......................................................................................... 4 Pginas principal y de registro. .......................................................................................... 6 La seguridad ........................................................................................................................... 6 Seguridad .NET para el sitio Web ...................................................................................... 6 Los controles de seguridad ................................................................................................. 8 La base de datos ...................................................................................................................... 8 Modificacin de la base de datos autogenerada ................................................................. 8 El mdulo de mantenimiento a libros y autores. .................................................................. 10 Generacin de los objetos de negocio que controlan las tablas ........................................ 10 Creacin de la pgina que muestra los catlogos de libros y autores ............................... 12 Formulario de solicitud y entrega de libros. ......................................................................... 15 Mdulo de entrega y solicitud de libros ........................................................................... 15 El men de navegacin ......................................................................................................... 19
Introduccin
Este material se crea tomando como base el tutorial Creando una aplicacin en C# de principio a fin, material que alguna vez encontr en la Universidad .NET. Aquel material usaba tcnicas del .NET Framework 1.1 con el que aprend en un instante casi todo lo ms importante del desarrollo con esa versin de la tecnologa .NET. Ahora, es tiempo de migrar a .NET Framework 2.0. As que sin ms ni ms comencemos.
El sistema
En resumen, se trata de un sistema de biblioteca que permite hacer prstamos de libros a la vez que actualiza el inventario con cada prstamo o devolucin. Es posible dar mantenimiento al catlogo de autores, al catlogo de libros y tambin es posible administrar usuarios. Cuenta con seguridad, de manera que solo el usuario administrador puede dar mantenimiento a libros y autores. Cualquier usuario puede darse de alta, pero no ser autorizado a pedir libros a menos que un usuario asistente o administrador lo active.
El sitio Web
Antes que nada, necesitamos un sitio Web que aloje nuestro sistema, as que generemos uno. Antes de comenzar
1. 2. El sitio se va a montar en una carpeta del sistema y no en http. De esta manera podemos llevarnos la aplicacin a cualquier otro sistema. Usaremos el nombre Default.aspx para nombrar a las pginas principales de cada mdulo.
1. Iniciar Visual Studio 2005 2. Generar un nuevo proyecto a. En el men File, seleccionar New Project y seleccionar solucin en blanco, guardarla en la carpeta C:\Comun\Biblioteca2005 y darle el nombre Biblioteca2005. Observar la figura para ms detalles
b. Presiona Ok. (Ya se, ya se, este paso est de ms, pero alguna vez estaba ya en el paso 10 de 4 de un tutorial en una clase y un alumno me llama y dice - Ya le doy <Enter>? - apenas estaba en el paso 1 )
c.
d.
En el explorador de soluciones solo hay un elemento Solution, selecciona New Web Site de la primera opcin del men contextual de este elemento. (o sea, selecciona el elemento solution que dice Biblioteca 2005 con el derecho del ratn, luego Add y luego New Web Site). Y esto para qu? Bueno, si y luego se me ocurre aadir un proyecto de Windows o un Servicio Web o Windows solo lo aado a la solucin y as esto forma parte de un solo producto. Nmbralo como se muestra:
e. No olvides seleccionar el lenguaje C# y crearlo en File System 3. Elimina la pgina Default.aspx que aparece en forma predeterminada. (No sirve, vamos a generar una pgina maestra que aloje a otra Default.aspx) 4. Generemos 3 carpetas en el sitio web seleccionando New Flder del men contextual del sitio Web. Van a contener los elementos visibles a cada rol de usuario.
1. Genera un tema con una hoja de estilo Este tema contiene la configuracin para cada rea marcada con la propiedad id de cada div. As que habr una regla de estilo por cada id en cada div. a. Crea una nueva carpeta en el sitio con Menu contextual Add ASP.NET folder Theme, Nmbralo como Biblioteca2005 b. Agrega un elemento Style Sheet al flder creado en el inciso a no importa el nombre que le pongas, todas las hojas de estilo que pongas ah son cargadas. Esto abre un editor de estilos que contiene body c. En el men contextual de rea de trabajo selecciona Add Style Rule d. Selecciona la marca Element ID y escribe el nombre Titulo, agrega esto con el botn > y presiona OK e. Ahora en el men contextual del texto #Titulo selecciona Build Style, en Position ajusta las propiedades como se muestra:
height: 150px; background-color: sienna; } #AreaDeRegistro { width: 300px; position: absolute; top: 0px; height: 150px; right: 0px; background-color: sienna; }
2. Aade al sitio un nuevo elemento de tipo Master page con el nombre predeterminado en
C# y con cdigo en archivo separado.
Vamos a crear cuatro reas: Encabezado, ColumnaIzquierda, Contenido y AreaDeRegistro. contenido por lo que se muestra a continuacin:
La seguridad
La seguridad que vamos a generar contiene una base de datos en SQLServer, tablas, roles, usuarios, permisos, encriptacin y reglas de integridad. Comnmente todo esto toma varios das o semanas en estar listo, (Bueno, tal vez unas horas, pero de que es tardado es tardado. Tiempo estimado para este paso: 10 minutos. Va? Cuntale Ms notas sobre esto al final de este Paso a paso.
1. Ir al sitio de administracin de la aplicacin con: 2. Seleccionar ASP.NET Configuration del men Website
3. Selecciona Security (se tarda un rato despus de esto, en el fondo se est creando una base de datos, tablas, etc.) 4. Selecciona y marca 5. En el paso 3 presiona Next 6. En el paso 4 activa la casilla Enable roles for this Web site 7. Aade 2 roles: Administrador y Asistente. (No aadimos Usuario porque ese no necesita rol) 8. Ahora aparece un elemento para crear nuevo usuario. Crea 3 usuarios: Administrador, Asistente1 y Usuario1 (anota las contraseas por algn lado, luego se te olvidan...y observa que la primer letra va con MAYSCULA) 9. Una vez creados los usuarios, presiona Next 10. Asignemos permisos a las carpetas, observa que al expandir el rbol se ven. a. A la carpeta de Administrador agrega: (Es muy importante que se haga en el orden que se indica) i. Anonymous Users Deny Add This Rule ii. Role Administrador Allow Add This Rule iii. All Users Deny Add This Rule b. A la carpeta de Asistente agrega: i. Anonymous Users Deny Add This Rule ii. Role Asistente Allow Add This Rule iii. Role Administrador Allow Add This Rule iv. All Users Deny Add This Rule c. A la carpe de Usuario solo deniega a Anonymous Users d. Presiona Finish e. Selecciona ahora el link Manage Users f. De cada usuario selecciona su link Edit roles g. Administrador es Administrador y Asistente, mrcalos h. Asistente1 solo es asistente, marca solo asistente i. Usuario1 no tiene rol, es un simple usuario no annimo. j. Presiona Back y cierra el explorador. Terminamos. La seguridad en .NET 2.0 es una maravilla ahorradora de tiempo, si se utiliza esta herramienta dejamos el trabajo a .NET. Ahora, se ha creado una base de datos ASPNETDB.MDF y algunos archivos web.config en cada carpeta que 1 necesite seguridad . De esta manera solo los usuarios autorizados pueden acceder a ciertas partes de la aplicacin, ver partes del men, usar controles, abrir pginas, etc. Esta seguridad ya incluye encriptacin y capacidad de recuperacin de contraseas y aadir usuarios. Adems de lo anterior es
1
Ilustracin 8. Seguridad
Los cambios en el explorador de soluciones solo sern visibles hasta que refresques el contenido con
posible usar la base de datos como cualquier base comn, podemos aadirle ms tablas o ms campos a las tablas que ya existen, crear vistas, procedimientos almacenados, etc. Si al final es necesario migrar esta base de datos un servidor, basta con cambiar la cadena de conexin y configurar el sitio para que lea la base desde otro lado, pero eso ya es otro tema.
La base de datos
Es momento de modificar la base de datos que gener el asistente de seguridad para que contenga los datos necesarios. Los datos que se necesitan son: Id del usuario (o matrcula de alumno/profesor/usuario), nombre del usuario, apellidos paterno y materno del usuario, direccin del usuario, telfono del usuario, cargo del usuario, permisos del usuario, rol del usuario, nombre completo de autor, id del autor, id del libro, isbn, cantidad en el inventario (libros totales con los que cuenta la biblioteca), cantidad en estantes (libros disponibles), ttulo del libro, fecha del prstamo.
1. Abre el explorador de servidores y selecciona la base ASPNETDB.MDF 2. Generemos la tabla biblio_autores, selecciona el nodo tables y con el men contextual aade una nueva tabla. 3. Modifcala como se muestra y marca el id como identity.(en las propiedades de abajo):
6. Ahora modificaremos la tabla aspnet_Users ya que .NET la gener pero faltan algunas
columnas como nombre, apaterno, amaterno, direccion, telefono. (Sin acentos eeeeh!).
3. 4. 5. 6.
Presiona Next y acepta el nombre de la conexin predeterminada, vuelve a presionar Next De las tres opciones selecciona, Create New Stored Procedures. Next Presiona el botn Query Builder para crear una sentencia en diseo. De la lista, selecciona biblio_autores y presiona Add y luego Close, marca todos los campos menos el de *. Modifica el Query para que ahora sea: SELECT FROM WHERE idautor, nombre biblio_autores (nombre LIKE % + @nombreAutor + '%')
Si copias y pegas este texto es necesario reescribir las comillas en el QueryBuilder debido a que las comillas de Word son otro caracter diferente
7. Presiona Next, cambia los nombres de los procedimientos almacenados a biblio_InsertarAutores en vez de NewInsertCommand (con los otros nombres haz lo mismo) 8. Presiona Next, Quita la marca de Fill, (es para llenar, no queremos llenar). 9. El nombre del mtodo que se generar cmbialo de GetData a ObtenerAutoresPorNombre, presiona Next, y luego Finish. 10. Edita el procedimiento almacenado biblio_ActualizarAutores en la base de datos ASPNETDB.MDF que est en el explorador de servidores en el nodo stored procedures para que quede as:
11. Elimina el parmetro @idautor de la coleccin de parmetros de UpdateParameters de UpdateCommand en las propiedades del dataAdapter del DataSet ds_autores.xsd 12. Guarda los cambios y cierra el DataSet. 13. Genera otro DataSet ds_libros pero ahora usa la tabla biblio_libros y cambia el WHERE por idautor= @idDelAutor, intuye los nombres de cada elemento ;) 14. El procedimiento almacenado biblio_ActualizarLibros de ds_libros se muestra:
15. Elimina el parmetro @idlibro de la coleccin de parmetros de UpdateParameters de UpdateCommand en las propiedades del dataAdapter del DataSet ds_libros.xsd 16. Terminamos.
5. Cuando pida seleccionar el objeto de negocios selecciona el TableAdapter de ds_autores. Presiona Next 6. Deja los valores de los mtodos como estn y presiona Next 7. Te pide definir la forma de llenar el parmetro nombreAutor, lo vamos a llenar con el TextBox txtNombreAutor, as que selecciona a. Parameter source: Control b. Control ID: txtNombreAutor c. Default Value: * 8. Presiona Finish. 9. Del smart tag de gvAutores marca a. Enable Paging b. Enable Editing
10. 11.
12. 13.
c. Enable Deleting d. Enable Sorting e. Enable Selection Del smart tag del fvAutores selecciona Cose Data Source y selecciona DsAutores Cambia las propiedades del fvAutores a: a. DefaultMode: Insert b. Visible: false En el cdigo del evento clic de btnBuscarAutores escribe DataBind(); Modifica el cdigo del evento clic del btnAgregarAutor como sigue: (no lo escribas tal como est, primero haz doble clic sobre el botn para generar el mtodo)
20. 21.
Agrega los siguientes elementos: a. Un botn btnAgregarUnLibro, Text: Agregar libro b. Un GridView gvLibros, Width:100px, PageSize: 5 c. Un FormView fvLibros Selecciona el smart tag de gvLibros(El triangulito en la esquina superior derecha) y selecciona Choose Data Source y del DropDown seleccin <New Datasource> Selecciona Object como el tipo de Data Source y nmbralo DsLibros. Presiona Next y deja los mtodos como estn, presiona Next Enlaza el parmetro idDelAutor con el control gvAutores. (observa que automticamente se activa la propiedad SelectedValue, esto permitir seleccionar los libros del autor seleccionado en el grid de autores). Presiona Finish. Habilita paging, sorting, editing y deleting. Cambia las propiedades de fvLibros as: a. DefaultMode: Insert b. Visible: false Activa la plantilla InsertItem de fvLibros y cambia el primer TextBox por un DropDownList Con smart tag del DropDown cambi su DataSource a dsAutores con data field en nombre y valuefield en idautor. Luego con el men contextual del DropDown activa SelectedValue como propiedad Custom binding con la expresin Bind("idautor"). Copia de fvLibros el contenido de IntemInserting template a EmptyTemplate En el evento clic de btnAgregarLibro escribe:
27. En el evento ItemInserted de fvLibros y en evento clic de Cancelar de la plantilla Insert escribe:
29. Ponle un poco de imaginacin al acomodo, colores, y otros adornos que hagan tu pgina
ms agradable. (Por favor no uses colores chillantes ni tipos de letras raras, solo s simple y prctico). As se ve mi pgina en el explorador despus de agregar algunos autores y libros:
31. Terminamos
2. Llama Biblio_SeleccionarLibrosSolicitados al Query creado. 3. El nombre del mtodo de seleccin es: ConsultarLibrosSeleccionados 4. Selecciona el nodo Stored Procedures de la base ASPNETDB.MDF y en su men contextual selecciona New Procedure. 5. Inserta el siguiente cdigo:
Genera en la carpeta Usuarios una nueva forma llamada SolicitarLibro. Copia los controles de Aministrador/Catalogos.aspx en esta forma Elimina los botones btnAgregar y btnAgregarLibro En gvAutores y gvLibros solo deja activa la opcin Allow Selection y Allow Paging. Cambia la leyenda del botn Select del grid de libros a Solicitar desde la opcin Edit colums del smart tag de gvLibros Aade al principio de la forma un grid gvLibrosSolicitados y ajusta Width a 100% Selecciona el smartTag y genera un nuevo datasource Acepta los valores predeterminados y asigna el enlace del parmetro nombreUsuario a la variable de sesin nombreUsuario. Cambia la leyenda del botn Select a Entregar Aade el siguiente campo a la clase de la forma:
static String cadenaDeConexion = ConfigurationManager.ConnectionStrings["ASPNETDBConnectionString"].ConnectionString;
19. Selecciona gvLibrosSolicitados y muestra la lista de eventos en la ventana de propiedades. 20. Haz doble clic sobre el evento SelectedIndexChanged 21. En este manejador escribe el siguiente cdigo:
22. En el manejador del evento SelectedIndexChanged del gridView gvLibros escribe lo siguiente:
24. Y corriendo
25. Terminamos
El men de navegacin
1. Aade un elemento Site Map a la raiz del sitio 2. Modifcalo para que se vea como sigue (observa el atributo roles):
3. Abre el archivo de configuracin general web.config y modifcalo para que incluya lo siguiente dentro de la propiedad <system.web>
4. Aade un elemento SiteMapDataSource (smdsMapaDelSitio) a la Master Page 5. Aade en la columna izquierda un control TreeView tvMenuDelSitio 6. Selecciona Cose Data Source del smart tag de tvMenuDelSitio, selecciona smdsMapaDelSitio. 7. Modifica algunas propiedades de tvMenuDelSitio. a. ShowLines: True b. ExpandDepth : 1 Ejecuta el sistema. Y Listo. Terminamos. Ahora te toca ponerle detalles
Si tienes comentarios sobre este tutorial (errores de dedo, lgicos o de cdigo) contctanos. Necesitas asesora, desarrollo, entrenamiento o personal entrenado en .net y java? jesus@desarrolla.com.mx Descargar proyecto en *.zip