Publicado en ASP .NET, C# - Csharp, Sql Server, Tutoriales, VB. NET

ASP .NET : Formulario Maestro-Detalle (aplicable a VB y C#)

asp-net

Articulo extraido desde http://www.data2max.com

La implementación de un formulario maestro-detalle en un webform de asp.net 2.0, aplicable a bases de datos de SQLServer, Access o cualquier otra fuente de datos compatible con ADO.NET.

Para comenzar, podemos crear un proyecto nuevo o desde un aspx ya creado (que es lo más usual). Asumiré la última Tongue antes q nada, un formulario maestro-detalle nos permite tener un listado (un control GridView seleccionable) de una tabla y que a su vez, mediante un control Detailsview (u otro) pueden verse los «detalles» de el registro que se seleccionó anteriormente. Mejor pasemos a la práctica:

Agregamos un control Gridview a nuestro webform:

Luego le asignamos un datasource que es la fuente de datos que alimentará nuestro Gridview y seleccionamos en «Nuevo origen de datos…»

En este caso voy a usar una base de datos en SQLServer 2000 llamada Northwind (porque es el que tengo a la mano y además, en todos lados publican ejemplos con SQLServer 2005 express, pero no funciona en muchos hostings o algunos servidores no tan recientes) y mi server se llama SISTEMA, pero puede funcionar exactamente igual en SQLServer 2005, access, oracle u otra fuente de datos, como lo posteé hace un rato, solo es de meterle mano. Así se aprende más.





Estos pasos salen la primera vez que creamos una conexión de datos, las siguientes ya no saldrán, usaremos la que hemos almacenado en el archivo web.config, en este archivo se guardan las configuraciones generales de nuestra aplicación web, es realmente una ventaja, ya que si por cualquier motivo cambia el nombre de servidor o de base de datos, no tendremos que modificar todo nuestro código, solamente la cadena de conexión del web.config.

Siguiendo con el tuto, ahora seleccionamos la tabla donde está la entidad principal a la cual queremos editar/consultar, en este caso es a los empleados (tabla Employees) y seleccionamos los campos: EmployeeID, FirstName y LastName.


Ahora ya tenemos el SQLDataSource creado y configurado (insisto, puede ser un AccessDataSource, OracleDataSource y demás Datasource’s, incluso Datasets por medio de ObjectDataSource).

Luego debemos activar la opción de «Habilitar selección» para hacer seleccionable el gridview.

Podemos ver como va quedando el formulario…si pregunta que debemos almacenar los cambios, diremos que SI.

Pues bien, ya tenemos la parte «maestra» del webform, ahora vamos con el detalle:

Agregamos un control DetailsViewa nuestra página

y seleccionamos nuevo origen de datos

como ya teníamos creada la conexión, solo la seleccionamos.

Ahora viene la parte FUNDAMENTAL de nuestro maestro-detalle. Debemos seleccionar la tabla que contiene los datos del registro que hayamos seleccionado desde el GridView, en nuestro caso sigue siendo la tabla Employees, solo que ahora podemos seleccionar los campos que queramos mostrar, incluyendo la llave primaria (esto es muy importante para que funcione, ya explicaré porqué).

En esta misma ventana, nos vamos al botón WHERE, que será donde especificaremos qué registro mostrará.


En 1 seleccionamos la columna que es llave primaria, el operador = y el origen que será un control
En 2 seleccionamos en ID de control de origen, al control (valga la redundancia) que será el que seleccionará el registro, en nuestro caso es GridView1 y hacemos clic en el botón Agregar.
Esto se traduce algo así como: «el detailsView mostrará el registro que concuerde con el ID del origen, que será igual a un control (GridView1) en la propiedad SelectedValue», que automáticamente la seleccionará.

Por ahora nuestro formulario es funcional, pero le podemos agregar la particularidad de poder editar y eliminar registros. Para ello, en la misma ventana de configuración de origen de datos, damos clic al botón de Avanzadas y activamos la opción de Generar instrucciones Insert, Update y Delete
–>

Luego el botón de Siguente y Finalizar.

Ahora solo queda activarle las opciones al DetailsView para que pueda hacer modificaciones a los registros.
Para ello seleccionamos el DetailsView y activamos las opciones que queramos que haga, Insertar un nuevo registro, Editar un registro existente o eliminar el registro (siempre y cuando no tenga registros «hijos» en otras tablas, ya que puede dar error de referencias).

Listo, ahora nuestro formulario está 100% funcional.

Inténtenlo ustedes mismos con bases de datos distintas. Para usar la base de datos NorthWind, pueden bajarla directamente del sitio de microsoft http://www.microsoft.com/downloads/details.aspx?FamilyID=06616212-0356-46a0-8da2-eebc53a68034&displaylang=en, pero les recomiendo usar una base de datos propia de cada uno de ustedes, para que puedan aplicar los nuevos conocimientos que puedan encontrar. Cool

Links Relacionados:
ASP .NET Aplicacion 3 Capas 1ra parte
ASP .NET Aplicacion 3 Capas 2da parte
ASP .NET Autenticar Usuarios con Formularios
C# Autenticar Usuarios con Formularios y Bases de Datos

TYDW.-

indice de empresas chilenas

20 comentarios sobre “ASP .NET : Formulario Maestro-Detalle (aplicable a VB y C#)

  1. Hola, gracias x el aporte, saben soy nuevo en ASPNeT, descargue el código para revisarlo, y no logro entender de donde sale o donde crean el namespace Northwind.TableAdapters, me imagino que en ese NAmespace es donde crean todos los metodos para utilizar y manejar la BAse de Datos, porfa si me pueden orientar, les agradecere bastante, gracias

  2. Esta muy bueno el ejemplo. Tengo una pregunta: como hago para que al insertar la informacion en el DetailsView me la cargue en el gridview? Gracias!

  3. Esta muy bien este tuto pero podrias hacer uno donde seleccionemos el trabajaro y nos mande a otra webform donde se encuentre un deatailsview osea que sean 2 webforms, donde selecionemos el maestro y despues nos mande al detallle

  4. Tu ejemplo sería más ilustrativo si utilizaras 2 o más tablas relacionadas que puedan mostrarse como maestro/detalle. Hacer esto sobre una sola tabla ¿?.

  5. Hola amigo, muy bueno el ejemplo pero tengo un problema.
    Cuando voy a las opciones avanzadas para Generar instrucciones Insert, Update y Delete resualta que no puedo tildar ninguana de las dos casillas ya que está deshabilitadas.
    Tengo SQL 2005 express y visual studio 2008. me conecto por autenticación de windows con el usuario dueño de la base y estoy trabajando en mi pc local.
    Puedes ayudarme??.
    He desarrollado un ejemplo simple con mysql y funciona correctamente. No conozco mucho SQL Server y puede que se encuentre algún problema en la base.
    Espero puedas ayudarme.
    Saludos.

  6. Ayuda porfavor
    Pasa q en el 1er paso para el GRID todo bien… al grid lo llamé Gridusu
    No se porque me muestra ese error ya que para mi todo esta bien AYUDA PORFAVOR , muchas gracias.
    Pero cuando ya pongo con el DetailsView me aparece error al ejecutarlo el error es el sgte:

    Error de compilación
    Descripción: Error durante la compilación de un recurso requerido para dar servicio a esta solicitud. Revise los detalles de error específicos siguientes y modifique el código fuente en consecuencia.

    Mensaje de error del compilador: CS1061: ‘ASP.default_aspx’ no contiene una definición de ‘Gridusu_SelectedIndexChanged’ ni se encontró ningún método de extensión ‘Gridusu_SelectedIndexChanged’ que acepte un primer argumento de tipo ‘ASP.default_aspx’ (¿falta una directiva using o una referencia de ensamblado?)

    Error de código fuente:

    Línea 12:
    Línea 13:
    Línea 14:

    1. Gridusu_SelectedIndexChanged es un evento que se ejecuta al seleccionar una fila de la grilla.

      Haz un dobel click en la grilla y veras los eventos asociados.

      atte.

  7. asp:GridView ID=»Gridusu» runat=»server» AllowPaging=»True» AllowSorting=»True» AutoGenerateColumns=»False» DataKeyNames=»Tipo Usuario»
    DataSourceID=»conex1″ onselectedindexchanged=»Gridusu_SelectedIndexChanged»

  8. hola ps antes que nada te quiero agradecer por este tutorial esta muy bueno y fue de mucha ayuda para un proyecto que estoy realizando….çgracias nuevamente ;0)

  9. lo he hecho con sql server pero al hacerlo conectandome a mysql, nose como pasarle el parametro del maestro al detalle para que levante la grilla del detalle, favor si me puedes ayudar.

Deja un comentario