Cómo mostrar los registros primarios y secundarios en un DataGrid utilizando Windows Forms con Visual C# .NET

Este artículo se publicó anteriormente con el número E308484
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Para obtener una versión de este artículo para Microsoft Visual Basic .NET, consulte 308052.

Este artículo hace referencia al siguiente espacio de nombres de la Biblioteca de clases de Microsoft .NET Framework:
  • System.Data.SqlClient

EN ESTA TAREA

Resumen
En este artículo se describe cómo crear un formulario de Windows que muestra un registro primario (o maestro) y todos los registros secundarios relacionados (o de detalle) mediante las tablas Customers y Orders de Neptuno. También se describe el objeto CurrencyManager y su finalidad.

En este artículo, la información de registro primario se muestra en controles TextBox y la de registros secundarios se muestra en un control DataGrid. El proyecto que creará en este artículo contiene también controles Button para que pueda desplazarse por los registros.

Volver al principio

Requisitos

En la lista siguiente se indican el hardware, el software, la infraestructura de red y los Service Pack recomendados que necesitará:
  • Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server o Windows NT 4.0 Server
  • Microsoft SQL Server versión 7.0 ó 2000, o Microsoft Data Engine (MSDE) con la base de datos de ejemplo Neptuno instalada
  • Microsoft Visual Studio .NET
Volver al principio

El objeto CurrencyManager

Es importante que comprenda la función del objeto CurrencyManager para poder seguir el ejemplo de este artículo. Cualquier origen de datos con el que se enlace en un control de Windows Forms contiene un objeto CurrencyManager asociado. El objeto CurrencyManager supervisa la posición y los enlaces con ese origen de datos. El formulario contiene un objeto CurrencyManager para cada origen de datos discretos con el que enlaza. Si todos los controles del formulario se enlazan con un único origen de datos (por ejemplo, si varios controles TextBox se enlazan con la misma tabla de datos), comparten el mismo objeto CurrencyManager. Cuando los controles del formulario están enlazados con distintos orígenes, el formulario contiene varios objetos CurrencyManager, cada uno de los cuales realiza un seguimiento del registro o elemento de dato que los controles utilizan.

Volver al principio

Crear el proyecto

En esta sección se describe cómo crear el proyecto que demuestra esta funcionalidad.
  1. Inicie Visual Studio .NET y cree un nuevo proyecto de aplicación para Windows de Visual C#.
  2. Arrastre tres controles TextBox, cinco controles Button y un DataGrid al formulario predeterminado.
  3. Cambie las propiedades Text de los controles Button a Rellenar, Primero, Siguiente, Anterior y Último.
  4. Cambie a la vista Código y agregue la instrucción siguiente al principio de la ventana Código:
    using System.Data.SqlClient;					
  5. Agregue la siguiente variable miembro a la clase Form1 detrás de las instrucciones private:
    CurrencyManager cm;					
  6. Cambie a la vista Formulario y haga doble clic en Rellenar. Agregue el código siguiente al evento Click:
    {// Get the data.SqlConnection con = new SqlConnection("server=<YourServer>;uid=<your_user_id>;                                       pwd=<your_password>;database=northwind");SqlDataAdapter daCust = new SqlDataAdapter("Select * from Customers", con);SqlDataAdapter daOrders = new SqlDataAdapter("Select * from Orders",con);DataSet ds=new DataSet();daCust.Fill(ds,"Cust");daOrders.Fill(ds,"Orders");ds.Relations.Add("CustOrd",ds.Tables["Cust"].Columns["CustomerID"],ds.Tables["Orders"].Columns["CustomerID"]);// //Bind the controls.// textBox1.DataBindings.Add("Text", ds.Tables["Cust"],"CustomerID");textBox2.DataBindings.Add("Text", ds.Tables["Cust"],"CompanyName");textBox3.DataBindings.Add("Text", ds.Tables["Cust"],"ContactName");dataGrid1.DataSource=ds.Tables["Cust"];dataGrid1.DataMember="CustOrd";// //Initialize the CurrencyManager.// cm=(CurrencyManager)this.BindingContext[ds.Tables["Cust"]];}					
  7. Modifique la cadena de conexión según corresponda para su entorno.
  8. Haga doble clic en Primero y agregue el código siguiente al evento Click:
    {if((cm!=null)&(cm.Count>0))cm.Position=0;}					
  9. Haga doble clic en Siguiente y agregue el código siguiente al evento Click:
    {if((cm!=null) &(cm.Count>0)&(cm.Position<cm.Count-1))cm.Position +=1;}
  10. Haga doble clic en Anterior y agregue el código siguiente al evento Click:
    {if((cm!=null)&(cm.Count>0)&(cm.Position>0))cm.Position -=1;}					
  11. Haga doble clic en Último y agregue el código siguiente al evento Click:
    {if((cm!=null)& (cm.Count>0))cm.Position=cm.Count;}
Volver al principio

Probar la aplicación

  1. Presione la tecla F5 para compilar y ejecutar la aplicación. Observe que el formulario está vacío inicialmente.
  2. Haga clic en Rellenar para cargar y enlazar los datos, y utilice los botones de desplazamiento para recorrer los datos.
Volver al principio
Referencias
Para obtener más información acerca del objeto CurrencyManager, consulte la documentación de la Ayuda de Visual Studio .NET.

Volver al principio
Propiedades

Id. de artículo: 308484 - Última revisión: 02/24/2014 17:52:35 - Revisión: 3.2

Microsoft ADO.NET (included with the .NET Framework), Microsoft ADO.NET 1.1, Microsoft Visual C# .NET 2002 Standard Edition, Microsoft Visual C# .NET 2003 Standard Edition

  • kbnosurvey kbarchive kbhowtomaster KB308484
Comentarios