![]()
Articulo extraido desde 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
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. 
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
Archivado bajo: ASP .NET, C# - Csharp, Sql Server, Tutoriales, VB. NET | Etiquetado: .NET, detalle, formulario, maestro
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
solamente llenare
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!
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
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 ¿?.
Tu ejemplo ta bueno, me servio de mucho para recrdar algunos detalles gracias,
como hacer eso pero con multiples tablas
mi BD esta en Oracle
Excelente, muchas gracias por el tutorial