Cómo: Recuperar el DataView de un Windows Forms Control dependiente en Visual Basic .NET

Seleccione idioma Seleccione idioma
Id. de artículo: 317041 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo se describe cómo recuperar un objeto DataView de un control enlazado de formularios Windows Forms.

Descripción de la técnica

Para enlazar un origen de datos a un control de formularios Windows Forms, puede código usted mismo o utilizar el enlace en tiempo de diseño. Cuando se produce el enlace en tiempo de diseño, deberá tener acceso a la DataView que utiliza el control enlazado. Sin embargo, la DataView no se expone de forma predeterminada en el enlace en tiempo de diseño.

Puede utilizar uno de estos métodos para tener acceso a la DataView :
  • Utilice la clase BindingContext para obtener una referencia al objeto CurrencyManager , que se genera desde el enlace. Posteriormente, utilice el objeto CurrencyManager para obtener una referencia a la DataView . Éste es el método más confiable.

    Para obtener información adicional acerca de cómo utilizar CurrencyManager en Visual Basic. NET, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
    308052Cómo: Mostrar los registros secundarios en un DataGrid utilizando Windows Forms mediante Visual Basic .NET primarios y
  • Utilice la propiedad DefaultView del objeto DataTable . Sin embargo, no puede garantizar que el DefaultView de DataTable es la misma DataView que utiliza el control enlazado.

    Por ejemplo, si varios controles DataGrid están enlazados a un DataTable , el enlace puede o no generar objetos DataView adicionales, dependiendo de la sintaxis que utilizar para enlazar. Para obtener más información acerca de cómo las diferencias en sintaxis de enlace pueden generar varios objetos DataView , consulte la sección de Troubleshooting.
En este artículo muestra cómo utilizar la clase BindingContext para tener acceso a la DataView .

Requisitos

En la lista siguiente se describe el hardware, el software, la infraestructura de red y los service pack recomendados que se necesitarán:
  • Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, Microsoft Windows 2000 Advanced Server o Microsoft Windows NT 4.0 Server
  • Microsoft Visual Studio .NET
  • Microsoft SQL Server 7.0 o posterior
En este artículo se supone que está familiarizado con los temas siguientes:
  • Visual Studio .NET
  • Fundamentos y sintaxis de ADO.NET

Crear un proyecto y agregar código

  1. Siga estos pasos para crear un nuevo proyecto de aplicación para Windows en Visual Basic. NET:
    1. Inicie Visual Studio NET..
    2. En el menú archivo , seleccione nuevo y, a continuación, haga clic en proyecto .
    3. En el cuadro de diálogo Nuevo proyecto , haga clic en Proyectos de Visual Basic bajo Tipos de proyecto y, después, haga clic en Aplicación para Windows en plantillas .
  2. En la sección General Declarations de Form1, agregue la siguiente línea de código:
    Imports System.Data.SqlClient
    					
  3. Arrastre un objeto SqlDataAdapter desde la sección datos del cuadro de herramientas al formulario.
  4. Siga estos pasos en el Asistente para configuración:
    1. Cuando se inicia el Asistente para configuración, haga clic en siguiente .
    2. Haga clic en Nueva conexión y, a continuación, configurar una conexión a la base de datos Northwind de SQL Server. Haga clic en Aceptar y, a continuación, haga clic en siguiente .
    3. Haga clic en Usar instrucciones SQL y, a continuación, haga clic en siguiente .
    4. Escriba la siguiente cadena de consulta SQL:
      select * from customers
      						
    5. Haga clic en Finalizar .
  5. Haga clic con el botón secundario en SqlDataAdapter en el panel de su formulario y, a continuación, haga clic en Generar conjunto de datos . Asegúrese de que está seleccionado el nuevo y, a continuación, haga clic en Aceptar .
  6. Arrastre un control DataGrid desde el cuadro de herramientas formularios Windows Forms hasta el formulario. Haga clic para seleccionar el DataGrid .
  7. En el panel Propiedades , seleccione el DataSet generado para la propiedad DataSource y, a continuación, haga clic en clientes para la propiedad DataMember .
  8. Haga doble clic en el formulario para agregar un controlador de eventos Form1_Load y, a continuación, agregue el código siguiente al controlador de eventos:
    SqlDataAdapter1.Fill(DataSet11)
    Dim cm As CurrencyManager = CType(Me.BindingContext(DataSet11, "Customers"), CurrencyManager)
    Dim dv As DataView = CType(cm.List, DataView)
    dv.Sort = "contactname DESC"
    						
    Nota : asegúrese de que el DataSet y SqlDataAdapter se denominan según a los objetos que agregó a su formulario.

    Nota : si utiliza la autenticación de SQL, asegúrese de que la contraseña está incluida en la propiedad ConnectionString de SQLConnection1 .
  9. Presione F5 para compilar y ejecutar dicha aplicación. Observe que los datos en el DataGrid se ordenan por nombre de contacto en orden descendente. Ha recuperó satisfactoriamente la DataView del DataGrid enlazado.

Solución de problemas

La sintaxis que utilizar para enlazar un control a un origen de datos determina si el control comparte un objeto CurrencyManager que ya se ha creado o crea un nuevo objeto CurrencyManager . Ser coherente en forma de conjunto DataSource , el DisplayMembers , el DataMembers y las propiedades DataBindings . Si no son coherentes, el objeto BindingContext crea múltiples objetos CurrencyManager del DataSet . Esto puede producir un comportamiento inesperado.

Por ejemplo, si enlaza un control DataGrid en tiempo de diseño estableciendo su propiedad DataSource en DataSet1 y estableciendo la propiedad DataMember a clientes , debe utilizar el código siguiente para enlazar un control TextBox con el mismo DataSet con el mismo CurrencyManager :
TextBox1.DataBindings.Add("text", DataSet1, "customers.contactname")
				
aunque el código para seguir ilustra un ejemplo de enlace de datos válidos, DataGrid está enlazado de forma incoherente. Por lo tanto, este código crea un segundo objeto CurrencyManager .
TextBox1.DataBindings.Add("text", DataSet1.Tables("customers"), "contactname")
				
si desea enlazar un control DataGrid al DataSet y compartir el mismo CurrencyManager que se genera para el control TextBox en el ejemplo de código último de enlace, debe establecer la propiedad DataSource en DataSet1.Customers y deje en blanco la propiedad DataMember .

Para obtener más información acerca de este tema, consulte la siguiente documentación de Ayuda de Microsoft Visual Studio .NET en Developer Network (MSDN) Library:
Consumidores de datos en formularios Windows Forms
http://msdn.microsoft.com/en-us/library/aa983578.aspx

Referencias

Para obtener más información acerca de cómo crear y cómo utilizar objetos DataView , consulte la siguiente documentación del Kit de desarrollo de software (SDK) de Microsoft .NET Framework:
Crear y utilizar DataViews
http://msdn.microsoft.com/en-us/library/fdcwwhez.aspx
Para obtener más información acerca de la clase CurrencyManager , consulte la documentación de MSDN siguiente:
Clase CurrencyManager
http://msdn2.microsoft.com/en-us/library/system.windows.forms.currencymanager(vs.71).aspx

Propiedades

Id. de artículo: 317041 - Última revisión: domingo, 13 de mayo de 2007 - Versión: 2.4
La información de este artículo se refiere a:
  • Microsoft ADO.NET 1.1
  • Microsoft ADO.NET 1.0
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Palabras clave: 
kbmt kbdataadapter kbdatabinding kbhowtomaster kbsqlclient kbsystemdata KB317041 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 317041

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com