Una plantilla (template) para sitios web de datos dinamicos

Download: desde aqui
s1He pasado mucho tiempo haciendo que mis aplicaciones web basadas en sitios web de datos dinamicos tengan la interface que deseo y lo he tenido que hacer varias veces pero eso se acabo he cosntruido esta plantilla que implementa todos los cambios que siempre hago al estandar de los sitios web de datos dinamicos y lo he resumido en esta plantilla la cual pueden descargar desde aqui le he puesto de nombre “Sitio Web de Datos Dinamicos por XMEELE” pero voy a expllicar su comportamiento:

Cambios en el diseño:

  • Diseño cambiado al que viene con Aplicacion WEB.
  • El ancho del conetenedor principal de la pagina es el 100%.
  • En caso que la cuadricula exceda del tamaño de la pantalla esta tiene un scroll horizontal.
  • Se ha incorporado en el template List.aspx un checkbox para seleccionar uno/varios/todos los elementos de la grilla.
  • Adicion de “Eliminar Todos” que elimina los registros seleccionados.
  • Los botones de la grilla ahora son imagenes, en las opciones de agregar y editar se ha colocado tambien iconos.
  • Los elementos de filtro se han alineado.

s2

  • En la pagina principal existe la opcion de manejo de accesos directos o opciones favoritos que son las opciones del menu que se seleccionan como favoritas, esta son configurables por usuario.
  • Muestra en todo momento el usuario que se ha logeado y la fecha actual.
  • El boton para adicionar un nuevo registro se ha colocado en la parte de arriba y con un icono mucho mas visible.
  • Los campos de tipo texto se redimencionan al ancho del campo.
  • Si un campo es de tipo texto y tiene mas de 200 caracteres este se muestra como campo texto.

s3

Elementos del modelo de las configuraciones

s4

Esta plantilla incorpora para su funcionamiento un modelo basado en Entity Framework llamado ModeloCFG.edmx y el objeto que implementa es llamado “configuracionEntities” y se encuentra dentro del namespace DAL (data access layer) e implementa las siguientes entidades:

  • Usuarios: que tiene los datos de los de los usuarios nombre, login, password y si es administrador o no.
  • Grupos: que son los grupos de usuarios que podrian ser administradores, secretarias, etc.
  • Menu: contiene los elementos del menu que se va a mostrar en la pagina, es aqui donde se guarda el menu.
  • Permisosgrupo: contiene que elementos del menu y permissos tiene cada grupo de usuarios.
  • Useracc: donde se guardan los accesos directos de los usuarios.

Tambien estan mapeadas estas entidades hacia una ruta diferente a las del modelo por defecto, de manera tal que para acceder a ellas se tiene que escribir la palabra “admin” antes del nombre de la misma ej: sitoweb/admin/menu/list.aspx esto esta referenciado en el global.asax.cs.

Elementos del comportamiento global de la aplicacion:

Al objeto Global se le adicionaron los siguientes miembros:

  • Usuarioact: Objeto publico de tipo DAL.usuarios que guarda el usuario que sea logeado actualmente.
  • Pergroup: Objeto de tipo DAL.permisogrupo que se actualiza al seleccionar un elemento del menu o de los accesos directos indicando los permisos que tiene el usuario sobre la pagina que se va a mostrar.

Elementos de seguridad

Estos elementos se encuentra dentro de la carpeta adminforms.

login.aspx es la pagina de login que contiene un control login pero ha sido odificado para validar las contraseñas y los usuarios desde una entidad llamada usuarios que esta en el modelo llamado “configuracionEntities” de la misma manera la pagina para cambiar contraseñas del usuario actual (cambiapass.apx) valida contra esta entidad.

s9

s8

Existe tambien la pagina about.aspx que permite mostrar los derechos de la aplicacion es un siseño simple pero ya existe.

s10

Se ha implementado tambien en esta carpeta la opcion para elegir los accesos directos llamada myaccess.aspx y contiene dos listas de elementos del menu una indica cuales son los elementos del menu y cuales son los accesos directos.

s11

Elementos Administrativos

Los elementos administrativos son usuarios, grupos de usuarios, menu, permisos de grupo, accesos de usuario, estos elementos solo pueden ser accedidos por usuarios que tengan permiso de acceder a estos elementos mediante la opcion de administrador en la entidad usuarios.

Cada uno de estos elementos puede ser accedido desde “sitoweb/admin/entidadadmin/” donde entidadadmin es el nombre de la entidad estos elementos puden ser accedidos desde el link “Administracion” que aparece en la parte superior del menu de usuario si este usuario tiene capacidades de administrador.

Para crear un elemento del menu se tiene que trabajar de la siguente manera:

  • Titulo: Nombre que se va a mostrar en el menu.
  • Nombretabla: Nombre de la entidad que hace referencia en el modelo (en el modelo de datos y no en el modelo de configuracion), si no es una tabla la ruta del archivo que se desea abrir.
  • Imgruta: Ruta de la imagen que va ser mostrada en caso de que se elija como acceso directo.
  • Descripcion: Una descripcion para ayudar, no se muestra en el menu.
  • Pos: Indica la posicion en el menu o submenu.
  • Establa: Indica si la referecia es una tabla o no.
  • Menu principal o menu2: Indica cual es el menu superior al que pertenece, si no tiene menu superior es elemento del menu principal.

s6

s7

En el caso de los usuarios y sus permisos pues no se puede dar a los usuarios directamente permisos sobre las entradas del menu la logica es que un usario pertemece a un grupo y es el grupo el que posee permisos sobre los elementos del menu ahora las paginas que son generadas por las plantillas estandar de listado, adicion, edicion y detalles de los sitios web de datos dinamicos ya vienen programadas para leer los permisos asignados y asi permitirles realizar las acciones correspondientes los permisos son cuatro y son los siguientes:

  • Examinar: indica si el usuario puede ver la pagina.
  • Insertar: Indica si el usuario puede acceder a la pagina de insercion.
  • Editar: Indica si el usuario puede modificar registros.
  • Eliminar: si el susuario puede eliminar registros

Todos estos permisos son asignados por grupo y cuando se crea un nuevo elemento del menu se crean permisos afirmativos para todos los grupos que existan en el aplicativo, por eso es imperativo que despues de crear un elemento del menu se verifiquen los permisos.

s12

En cuanto a los accesos directos por usuario esto esta activo desde el menu de usuario normal.

Utilidades:

Solo existe una utilidad en esta plantilla y es un generador de clases, estas clases son las que se necesitan para configurar la metadata y las genera basadas en el modelo que se coloca como DefaultModel en el sitio web de datos dinamicos las clases se generan de la siguiente manera:

using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Web;
using System.Web.DynamicData;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel;
namespace DAL.modelo1
{
#region tipdocs
[MetadataType(typeof(tipdocsmetadata))]
[DisplayName(“Tipdocs”)]
public partial class tipdocs
{
public override string ToString()
{
return this.documento.ToString();
}

private class tipdocsmetadata
{
[ScaffoldColumn(false)]
[DisplayName(“idtipdoc”)]
[Required]
[Display(Order = 0, AutoGenerateFilter = false)]
[UIHint(“Integer”)]
[UIHint(“Integer”)]
public object idtipdoc { get; set; }

[ScaffoldColumn(true)]
[DisplayName(“documento”)]
[Required]
[Display(Order = 1, AutoGenerateFilter = false)]
[UIHint(“Default”)]
public object documento { get; set; }

[ScaffoldColumn(true)]
[DisplayName(“abreb”)]
[Display(Order = 2, AutoGenerateFilter = false)]
[UIHint(“Default”)]
public object abreb { get; set; }

[ScaffoldColumn(true)]
[DisplayName(“comisionesdet”)]
[Display(Order = 3, AutoGenerateFilter = false)]
[UIHint(“Default”)]
public object comisionesdet { get; set; }
}
}
#endregion
}

Como se puede ver define uan clase parcial por cada entidad y dentro de la clase parcial la clase que define los metadatos para los objetos que estan dentro de la entidad y algunos atributos que son los mas usados para mi al menos tambien va agenerar una sobreescritura al metodo toString de la entidad y devolvera el campo que se elija el como se hace esto es de la manera siguiente:

g0

  • En la interface que se le muestra la primera lista es la de las entidades y la segunda lista mostrara los objetos de cada entidad, al lado derecho de la primera lista se encuentran los valores de la metadata que se pueden configurar.
    • Mostrar: si se va a mostrar la entidad
    • DisplayName es el titulo de la entidad a mostrar.
    • Campo a mostrar: El campo que se devolvera en los FK’s

g1

  • Pulse “Guardar” despues de modificar los datos y antes de continuar, sino se puedne perder las modificaciones.
  • Al seleccionar una entidad en la lista inferior se muestran las columnas de la misma en la lista inferior, se debe de configurar uno a uno y los valores a configurar son:
    • Mostrar: si el campo se muestra o no. Equivalente a [ScaffoldColumn(true/false)]
    • DisplayName: Titulo del campo a mostrar en la UI. equivalente a [DisplayName(“nombrecampo“)]
    • Tipo de control: Es el tipo que corresponda con los FieldTemplates del Sitio Web de datos dinamicos. Equivalente a [UIHint(“tipodecontrol“)]
    • Posicion: Indica la posicion del campo en la UI es equivalente a [Display(Order = posicion)].
    • Filtrar: Indica si se va a generar un auto filtro por este campo. Equivalente a [Display(AutoGenerateFilter = true/false)]
    • Requerido: Indica si el campo se va a validad como obligatorio. equivalente a [Required].

g2

  • Pulse grabar antes de cambiar al siguiente campo.
  • En el campo que indica “Espacio de nombres” indique el espacio de nombres al que desea que pertenescan las clases generadas, recuerde que este debe de ser el mismo al que pertenece el modelo de datos.
  • En donde indica Archivo destino tiene que seleccionar un archivo existente en la ubicacion que desee para que se genere alli el contenido de las clases generadas.
  • Pulse el boton “Generar”

g3

  • Podra ver que a la vez que se genera en un archivo, tambien se genera en un cuadro de texto multiline a la derecha del boton “Generar”

Bien las clases estan ya generadas lo que faltaria es que agregue un archivo de tipo clase en su proyecto y copie y pegue el contenido del archivo generado, con esto ya tiene las clases de metadata listas para su uso.

g4

Acerca de

Antes que nada voy a dejar en claro algo, en este blog escribo como se me place, asi que no busquen errores de ortografia o de redaccion que los van a encontrar a montones y tampoco me critiquen o me digan nada sobre ellos pues no tengo intencion alguna de cambiarlos, lo que escribo lo dejo asi y no lo corrijo,claro esta a menos que sean lineas de codigo. Jorge Prado Anci, profesional en desarrollo de aplicaciones, en especial las dirigidas a bases de datos. He trabajado con VFP en casi todas sus versiones, se algo de Java (que no me gusta, es eso solo no me gusta, es bueno pero no me gusta), lo suficiente de PHP como para tener mi propio CMS(es que sigue sin gustarme por la capacidad de desorden que te permite este “lenguaje”), VB lo conoci y lo deteste tanto que lo olvide al punto de no querer adoptar ni por obligacion a su reemplazante VB .NET (por lo mismo de Java) y si C# este si me encanta y aun que conozco bastante bien el lenguaje, la verdad es que me falta mucho del Framework (del 100% estare en un 65%). Soy un apasionado por el orden (en los proyectos de desarrollo), de la programacion en capas (de MVC conozco pero no he aplicado mucho), los estandares y las condenadas pruebas unitaria. Venga creo que ya con esto fue suficiente.

Tagged with: , , , , , ,
Publicado en c#, Dynamic Data, Leng. de Prog., MVC, Webs Internet
3 comments on “Una plantilla (template) para sitios web de datos dinamicos
  1. […] .NET Dinamyc Data: Guia Completa sobre Sitios Web de Datos Dinamicos Una plantilla (template) para sitios web de datos dinamicos Entity FrameWork 4: Obteniendo, insertando y actualizando registros Entity FrameWork: Por que […]

  2. Un saludo afectuoso desde Perú.

    Deseo realizar una pagina dinámica así como la tuya para mi trabajo.. desearía si me podrías compartir nociones y conocimientos, agradezco tu apoyo y atención.

  3. Gonzalo dice:

    Hola, como importo la plantilla en mi mvc, Gracias.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Escribe tu dirección de correo electrónico para suscribirte a este blog, y recibir notificaciones de nuevos mensajes por correo.

Únete a otros 441 seguidores

Blog Stats
  • 303,829 hits
A %d blogueros les gusta esto: