Demonstra Passo a passo: Conectando a dados em objetos (Windows Forms)
Esta explicação passo a passo cria objetos para armazenar os dados do cliente e pedido, juntamente com uma fonte de dados de objeto para cada objeto. O objeto de fonte de dados aparece no Fontes de dados janela: itens são arrastados da janela para um formulário para criar controles que são acoplados a dados nas propriedades públicas para cada objeto. A explicação passo a passo também mostra como usar TableAdapters para buscar dados a partir do banco de dados e preencher os objetos.
A fonte de dados de objeto é criada executando o Assistente de Configuração de Fonte de Dados e selecionando Object como o tipo da fonte de dados. Depois de concluir o Data Source Configuration Wizard, as propriedades públicas do objeto estão disponíveis na Janela Fontes de Dados e eles podem ser arrastados para seu formulário.
Tarefas ilustradas nesta explicação passo a passo incluem o seguinte:
Criar uma nova Windows Forms Application project.
Criando objetos personalizados para representar os clientes e pedidos.
Criando e configurando uma fonte de dados do objeto com base em objetos personalizados usando o Data Source Configuration Wizard.
Adicionar controles a um formulário que está acoplado para os dados em objetos personalizados.
Criando um dataset com TableAdapters para mover dados entre os objetos e o banco de dados.
Editando um TableAdapter da consulta principal.
Adicionando consultas a um TableAdapter.
Preenchendo os objetos com dados de banco de dados.
Criando o projeto
Para criar o novo projeto de aplicativo do Windows Forms
No menu File crie um New Project.
No Tipos de projeto o painel, sob o nó para o idioma que você deseja usar, clique em Windows.
Clique em Windows Application no painel Templates.
No nome , digite ObjectBindingWalkthrough e clique em OK.
O projeto ObjectBindingWalkthrough é criado e adicionado Solution Explorer.
Esta explicação passo a passo precisa de alguns objetos para vincular a. A primeira etapa é criar alguns objetos de exemplo para representar os clientes e pedidos. Para representar clientes nós criaremos um objeto Customer que representa um único cliente. Para representar pedidos nós criaremos um objeto Order que representa uma ordem única e um objeto Orders que representa uma coleção de objetos Order. Para a coleção de objetos Customer usaremos a coleção interna na classe BindingSource (explicada posteriormente nessa explicação passo a passo).
Criando o objeto cliente
Para criar o objeto cliente
No menu Project clique em Add Class.
Nomeie a nova classe Customer e clique em Add.
Substitua o código no arquivo da classe Customer com o seguinte código:
Observação O objeto Customer contém uma propriedade ordersCollection do tipo Orders. O editor exibirá uma mensagem informando Type 'Orders' is not defined. Esta mensagem é esperada e desaparecerá quando você criar as classes Order e Orders na próxima seção.
''' <summary> ''' A single customer ''' </summary> Public Class Customer Public Sub New() End Sub ''' <summary> ''' Creates a new customer ''' </summary> ''' <param name="customerId">The ID that uniquely identifies this customer</param> ''' <param name="companyName">The name for this customer</param> ''' <param name="contactName">The name for this customer's contact</param> ''' <param name="contactTitle">The title for this contact</param> ''' <param name="address">The address for this customer</param> ''' <param name="city">The city for this customer</param> ''' <param name="region">The region for this customer</param> ''' <param name="postalCode">The postal code for this customer</param> ''' <param name="country">The country for this customer</param> ''' <param name="phone">The phone number for this customer</param> ''' <param name="fax">The fax number for this customer</param> Public Sub New(ByVal customerId As String, ByVal companyName As String, ByVal contactName As String, ByVal contactTitle As String, ByVal address As String, ByVal city As String, ByVal region As String, ByVal postalCode As String, ByVal country As String, ByVal phone As String, ByVal fax As String) customerIDValue = customerId companyNameValue = companyName contactNameValue = contactName contactTitleValue = contactTitle addressValue = address cityValue = city regionValue = region postalCodeValue = postalCode countryValue = country phoneValue = phone faxValue = fax End Sub Private customerIDValue As String ''' <summary> ''' The ID that uniquely identifies this customer ''' </summary> Public Property CustomerID() As String Get Return customerIDValue End Get Set(ByVal value As String) customerIDValue = value End Set End Property Private companyNameValue As String ''' <summary> ''' The name for this customer ''' </summary> Public Property CompanyName() As String Get Return companyNameValue End Get Set(ByVal Value As String) companyNameValue = Value End Set End Property Private contactNameValue As String ''' <summary> ''' The name for this customer's contact ''' </summary> Public Property ContactName() As String Get Return contactNameValue End Get Set(ByVal Value As String) contactNameValue = Value End Set End Property Private contactTitleValue As String ''' <summary> ''' The title for this contact ''' </summary> Public Property ContactTitle() As String Get Return contactTitleValue End Get Set(ByVal Value As String) contactTitleValue = Value End Set End Property Private addressValue As String ''' <summary> ''' The address for this customer ''' </summary> Public Property Address() As String Get Return addressValue End Get Set(ByVal Value As String) addressValue = Value End Set End Property Private cityValue As String ''' <summary> ''' The city for this customer ''' </summary> Public Property City() As String Get Return cityValue End Get Set(ByVal Value As String) cityValue = Value End Set End Property Private regionValue As String ''' <summary> ''' The region for this customer ''' </summary> Public Property Region() As String Get Return regionValue End Get Set(ByVal Value As String) regionValue = Value End Set End Property Private postalCodeValue As String ''' <summary> ''' The postal code for this customer ''' </summary> Public Property PostalCode() As String Get Return postalCodeValue End Get Set(ByVal Value As String) postalCodeValue = Value End Set End Property Private countryValue As String ''' <summary> ''' The country for this customer ''' </summary> Public Property Country() As String Get Return countryValue End Get Set(ByVal Value As String) countryValue = Value End Set End Property Private phoneValue As String ''' <summary> ''' The phone number for this customer ''' </summary> Public Property Phone() As String Get Return phoneValue End Get Set(ByVal Value As String) phoneValue = Value End Set End Property Private faxValue As String ''' <summary> ''' The fax number for this customer ''' </summary> Public Property Fax() As String Get Return faxValue End Get Set(ByVal Value As String) faxValue = Value End Set End Property Private ordersCollection As New System.ComponentModel.BindingList(Of Order) ''' <summary> ''' The orders for this customer ''' </summary> Public Property Orders() As System.ComponentModel.BindingList(Of Order) Get Return ordersCollection End Get Set(ByVal value As System.ComponentModel.BindingList(Of Order)) ordersCollection = value End Set End Property Public Overrides Function ToString() As String Return Me.CompanyName & " (" & Me.CustomerID & ")" End Function End Class
namespace ObjectBindingWalkthrough { /// <summary> /// A single customer /// </summary> public class Customer { /// <summary> /// Creates a new customer /// </summary> public Customer() { } /// <summary> /// Creates a new customer /// </summary> /// <param name="customerID"></param> /// <param name="companyName"></param> /// <param name="contactName"></param> /// <param name="contactTitle"></param> /// <param name="address"></param> /// <param name="city"></param> /// <param name="region"></param> /// <param name="postalCode"></param> /// <param name="country"></param> /// <param name="phone"></param> /// <param name="fax"></param> public Customer(string customerID, string companyName, string contactName, string contactTitle, string address, string city, string region, string postalCode, string country, string phone, string fax) { customerIDValue = customerID; } private string customerIDValue; /// <summary> /// The ID that uniquely identifies this customer /// </summary> public string CustomerID { get { return customerIDValue; } set { customerIDValue = value; } } private string companyNameValue; /// <summary> /// The name for this customer /// </summary> public string CompanyName { get { return companyNameValue; } set { companyNameValue = value; } } private string contactNameValue; /// <summary> /// The name for this customer's contact /// </summary> public string ContactName { get { return contactNameValue; } set { contactNameValue = value; } } private string contactTitleValue; /// <summary> /// The title for this contact /// </summary> public string ContactTitle { get { return contactTitleValue; } set { contactTitleValue = value; } } private string addressValue; /// <summary> /// The address for this customer /// </summary> public string Address { get { return addressValue; } set { addressValue = value; } } private string cityValue; /// <summary> /// The city for this customer /// </summary> public string City { get { return cityValue; } set { cityValue = value; } } private string regionValue; /// <summary> /// The region for this customer /// </summary> public string Region { get { return regionValue; } set { regionValue = value; } } private string postalCodeValue; /// <summary> /// The postal code for this customer /// </summary> public string PostalCode { get { return postalCodeValue; } set { postalCodeValue = value; } } private string countryValue; /// <summary> /// The country for this customer /// </summary> public string Country { get { return countryValue; } set { countryValue = value; } } private string phoneValue; /// <summary> /// The phone number for this customer /// </summary> public string Phone { get { return phoneValue; } set { phoneValue = value; } } private string faxValue; /// <summary> /// The fax number for this customer /// </summary> public string Fax { get { return faxValue; } set { faxValue = value; } } private System.ComponentModel.BindingList<Order> ordersCollection = new System.ComponentModel.BindingList<Order>(); public System.ComponentModel.BindingList<Order> Orders { get { return ordersCollection; } set { ordersCollection = value; } } public override string ToString() { return this.CompanyName + " (" + this.CustomerID + ")"; } } }
Criando os objetos Orders
Para criar o objeto Order e a coleção de pedidos (Orders)
No menu Project selecione Add Class.
Nomeie a nova classe como Order e clique em Add.
Substitua o código no arquivo da classe Order com o seguinte código:
''' <summary> ''' A single order ''' </summary> Public Class Order Public Sub New() End Sub ''' <summary> ''' Creates a new order ''' </summary> ''' <param name="orderid">The identifier for this order</param> ''' <param name="customerID">The customer who placed this order</param> ''' <param name="employeeID">The ID of the employee who took this order</param> ''' <param name="orderDate">The date this order was placed</param> ''' <param name="requiredDate">The date this order is required</param> ''' <param name="shippedDate">The date the order was shipped</param> ''' <param name="shipVia">The shipping method for this order</param> ''' <param name="freight">The freight charge for this order</param> ''' <param name="shipName">The name of the recipient for this order</param> ''' <param name="shipAddress">The address to ship this order to</param> ''' <param name="shipCity">The city to ship this order to</param> ''' <param name="shipRegion">The region to ship this order to</param> ''' <param name="shipPostalCode">The postal code to ship this order to</param> ''' <param name="shipCountry">The country to ship this order to</param> Public Sub New(ByVal orderid As Integer, ByVal customerID As String, ByVal employeeID As Nullable(Of Integer), ByVal orderDate As Nullable(Of DateTime), ByVal requiredDate As Nullable(Of DateTime), ByVal shippedDate As Nullable(Of DateTime), ByVal shipVia As Nullable(Of Integer), ByVal freight As Nullable(Of Decimal), ByVal shipName As String, ByVal shipAddress As String, ByVal shipCity As String, ByVal shipRegion As String, ByVal shipPostalCode As String, ByVal shipCountry As String) orderIDValue = orderid customerIDValue = customerID employeeIDValue = employeeID orderDateValue = orderDate requiredDateValue = requiredDate shippedDateValue = shippedDate shipViaValue = shipVia freightValue = freight shipAddressValue = shipAddress shipCityValue = shipCity shipRegionValue = shipRegion shipPostalCodeValue = shipPostalCode shipCountryValue = shipCountry End Sub Private orderIDValue As Integer ''' <summary> ''' Identifier for this order ''' </summary> Public Property OrderID() As Integer Get Return orderIDValue End Get Set(ByVal value As Integer) orderIDValue = value End Set End Property Private customerIDValue As String ''' <summary> ''' The customer who placed this order ''' </summary> Public Property CustomerID() As String Get Return customerIDValue End Get Set(ByVal Value As String) customerIDValue = Value End Set End Property Private employeeIDValue As Nullable(Of Integer) ''' <summary> ''' The ID of the employee who took this order ''' </summary> Public Property EmployeeID() As Nullable(Of Integer) Get Return employeeIDValue End Get Set(ByVal Value As Nullable(Of Integer)) employeeIDValue = Value End Set End Property Private orderDateValue As Nullable(Of DateTime) ''' <summary> ''' The date this order was placed ''' </summary> Public Property OrderDate() As Nullable(Of DateTime) Get Return orderDateValue End Get Set(ByVal Value As Nullable(Of DateTime)) orderDateValue = Value End Set End Property Private requiredDateValue As Nullable(Of DateTime) ''' <summary> ''' The date this order is required ''' </summary> Public Property RequiredDate() As Nullable(Of DateTime) Get Return requiredDateValue End Get Set(ByVal Value As Nullable(Of DateTime)) requiredDateValue = Value End Set End Property Private shippedDateValue As Nullable(Of DateTime) ''' <summary> ''' The date this order was shipped ''' </summary> Public Property ShippedDate() As Nullable(Of DateTime) Get Return shippedDateValue End Get Set(ByVal Value As Nullable(Of DateTime)) shippedDateValue = Value End Set End Property Private shipViaValue As Nullable(Of Integer) ''' <summary> ''' The shipping method for this order ''' </summary> Public Property ShipVia() As Nullable(Of Integer) Get Return shipViaValue End Get Set(ByVal Value As Nullable(Of Integer)) shipViaValue = Value End Set End Property Private freightValue As Nullable(Of Decimal) ''' <summary> ''' The freight charge for this order ''' </summary> Public Property Freight() As Nullable(Of Decimal) Get Return freightValue End Get Set(ByVal Value As Nullable(Of Decimal)) freightValue = Value End Set End Property Private shipNameValue As String ''' <summary> ''' The name of the recipient for this order ''' </summary> Public Property ShipName() As String Get Return shipNameValue End Get Set(ByVal Value As String) shipNameValue = Value End Set End Property Private shipAddressValue As String ''' <summary> ''' The address to ship this order to ''' </summary> Public Property ShipAddress() As String Get Return shipAddressValue End Get Set(ByVal Value As String) shipAddressValue = Value End Set End Property Private shipCityValue As String ''' <summary> ''' The city to ship this order to ''' </summary> Public Property ShipCity() As String Get Return shipCityValue End Get Set(ByVal Value As String) shipCityValue = Value End Set End Property Private shipRegionValue As String ''' <summary> ''' The region to ship this order to ''' </summary> Public Property ShipRegion() As String Get Return shipRegionValue End Get Set(ByVal Value As String) shipRegionValue = Value End Set End Property Private shipPostalCodeValue As String ''' <summary> ''' The postal code to ship this order to ''' </summary> Public Property ShipPostalCode() As String Get Return shipPostalCodeValue End Get Set(ByVal Value As String) shipPostalCodeValue = Value End Set End Property Private shipCountryValue As String ''' <summary> ''' The country to ship this order to ''' </summary> Public Property ShipCountry() As String Get Return shipCountryValue End Get Set(ByVal Value As String) shipCountryValue = Value End Set End Property Private customerValue As Customer ''' <summary> ''' The customer this order belongs to ''' </summary> Public Property Customer() As Customer Get Return customerValue End Get Set(ByVal Value As Customer) customerValue = Value End Set End Property End Class ''' <summary> ''' A collection of Orders ''' </summary> Public Class Orders Inherits System.ComponentModel.BindingList(Of Order) End Class
using System; namespace ObjectBindingWalkthrough { /// <summary> /// A single order /// </summary> public class Order { /// <summary> /// Creates a new order /// </summary> public Order() { } /// <summary> /// Creates a new order /// </summary> /// <param name="orderid"></param> /// <param name="customerID"></param> /// <param name="employeeID"></param> /// <param name="orderDate"></param> /// <param name="requiredDate"></param> /// <param name="shippedDate"></param> /// <param name="shipVia"></param> /// <param name="freight"></param> /// <param name="shipName"></param> /// <param name="shipAddress"></param> /// <param name="shipCity"></param> /// <param name="shipRegion"></param> /// <param name="shipPostalCode"></param> /// <param name="shipCountry"></param> public Order(int orderid, string customerID, Nullable<int> employeeID, Nullable<DateTime> orderDate, Nullable<DateTime> requiredDate, Nullable<DateTime> shippedDate, Nullable<int> shipVia, Nullable<decimal> freight, string shipName, string shipAddress, string shipCity, string shipRegion, string shipPostalCode, string shipCountry) { } private int orderIDValue; /// <summary> /// The ID that uniquely identifies this order /// </summary> public int OrderID { get { return orderIDValue; } set { orderIDValue = value; } } private string customerIDValue; /// <summary> /// The customer who placed this order /// </summary> public string CustomerID { get { return customerIDValue; } set { customerIDValue = value; } } private Nullable<int> employeeIDValue; /// <summary> /// The ID of the employee who took this order /// </summary> public Nullable<int> EmployeeID { get { return employeeIDValue; } set { employeeIDValue = value; } } private Nullable<DateTime> orderDateValue; /// <summary> /// The date this order was placed /// </summary> public Nullable<DateTime> OrderDate { get { return orderDateValue; } set { orderDateValue = value; } } private Nullable<DateTime> requiredDateValue; /// <summary> /// The date this order is required /// </summary> public Nullable<DateTime> RequiredDate { get { return requiredDateValue; } set { requiredDateValue = value; } } private Nullable<DateTime> shippedDateValue; /// <summary> /// The date this order was shipped /// </summary> public Nullable<DateTime> ShippedDate { get { return shippedDateValue; } set { shippedDateValue = value; } } private Nullable<int> shipViaValue; /// <summary> /// The shipping method of this order /// </summary> public Nullable<int> ShipVia { get { return shipViaValue; } set { shipViaValue = value; } } private Nullable<decimal> freightValue; /// <summary> /// The freight charge for this order /// </summary> public Nullable<decimal> Freight { get { return freightValue; } set { freightValue = value; } } private string shipNameValue; /// <summary> /// The name of the recipient for this order /// </summary> public string ShipName { get { return shipNameValue; } set { shipNameValue = value; } } private string shipAddressValue; /// <summary> /// The address to ship this order to /// </summary> public string ShipAddress { get { return shipAddressValue; } set { shipAddressValue = value; } } private string shipCityValue; /// <summary> /// The city to ship this order to /// </summary> public string ShipCity { get { return shipCityValue; } set { shipCityValue = value; } } private string shipRegionValue; /// <summary> /// The region to ship this order to /// </summary> public string ShipRegion { get { return shipRegionValue; } set { shipRegionValue = value; } } private string shipPostalCodeValue; /// <summary> /// The postal code to ship this order to /// </summary> public string ShipPostalCode { get { return shipPostalCodeValue; } set { shipPostalCodeValue = value; } } private string shipCountryValue; /// <summary> /// The country to ship this order to /// </summary> public string ShipCountry { get { return shipCountryValue; } set { shipCountryValue = value; } } } /// <summary> /// A collection of Order objects /// </summary> class Orders : System.ComponentModel.BindingList<Order> { } }
No menu File escolha Save All.
Criar o objeto de fonte de dados
Você pode criar uma fonte de dados com base nos objetos criados na etapa anterior, executando o Data Source Configuration Wizard.
Para criar o objeto de fonte de dados
Crie o seu projeto.
Observação Você deve construir o projeto antes de objetos no projeto podem ser selecionados na Data Source Configuration Wizard.
Abrir o Fontes de dados janela clicando no dados menu e selecionando Show Data Sources.
Clique Add New Data Source na janela Data Sources.
O Data Source Configuration Wizard é aberto.
Sobre o Escolher um tipo de fonte de dados página, selecione objetoe, em seguida, clique em próximo.
No Selecione os objetos de dados página, expanda o ObjectBindingWalkthrough caixa ao lado de nós e selecione a verificação de cliente objeto.
Clique em Finish.
O objeto Customer aparece na janela Data Sources.
Criar um formulário acoplado a dados
Controles acoplados a Customer objeto são criados arrastando itens da Fontes de dados janela em um formulário.
Para criar um formulário com controles acoplados às propriedades do objeto
No Solution Explorer, selecione Form1 e clique em View Designer.
Arraste o cliente nó a partir do Fontes de dados janela para Form1.
Expandir o cliente nó e arraste o pedidos nó a partir de Fontes de dados janela para Form1.
Criando TableAdapters para carregar dados de banco de dados para os objetos personalizados
Para mover dados entre os objetos e o banco de dados, usaremos TableAdapters. Você pode criar TableAdapters para as tabelas Customers e Orders, usando o Assistente de Configuração de Fonte de Dados.
Para criar o TableAdapters
No menu Data, escolha Add New Data Source.
Sobre o Escolher um tipo de fonte de dados página, selecione banco de dadose, em seguida, clique em próximo.
Sobre o Escolher um modelo de banco de dados página, selecione Datasete em seguida, clique em próximo.
Sobre o Choose Your Data Connection de página, use um dos seguintes procedimentos:
Se uma conexão de dados para o banco de dados de exemplo Northwind estiver disponível na lista drop-down, selecione-o.
- ou -
Selecione New Connection para configurar uma nova conexão de dados para o banco de dados Northwind. Para obter mais informações, consulte Como: Conectar-se a Dados em um Banco de Dados.
Depois de selecionar uma conexão de dados, clique em próximo.
Sobre o Save connection string to the Application Configuration file página, clique em próximo.
Sobre o Choose your Database Objects de página, expanda o tabelas nó.
Selecione as tabelas Customers e Orders, e clique Finish.
O NorthwindDataSet é adicionado ao seu projeto e as tabelas Customers e Orders aparecem na janela Data Sources sob o nó NorthwindDataSet.
Adicionar o DataSet e TableAdapters para Form1
Você pode adicionar instâncias de CustomersTableAdapter,OrdersTableAdapter e NorthwindDataSet para o formulário arrastando seus componentes representativos da Toolbox.
Para preencher o objeto cliente (Customer) com dados da tabela Clientes
No menu Build, selecione Build Solution.
Arraste um NorthwindDataSet de Toolbox para Form1.
Arraste um CustomersTableAdapter de Toolbox para Form1.
Arraste um OrdersTableAdapter de Toolbox para Form1.
Adicionar uma consulta ao CustomersTableAdapter para retornar somente poucos clientes
Em aplicativos reais, você provavelmente nunca retornará toda a tabela de dados. Para esta explicação passo a passo nós retornaremos os cinco clientes superiores.
Observação |
---|
Você normalmente deve passar um parâmetro para selecionar quais clientes você deseja retornar, mas para abreviar esta explicação passo a passo nós codificaremos a consulta para retornar apenas cinco clientes e eliminar a necessidade de criar uma interface do usuário para entrar com valores de parâmetro. |
Para adicionar uma consulta adicional para o CustomersTableAdapter
No Solution Explorer, clique duas vezes no arquivo NorthwindDataSet.xsd.
O NorthwindDataSet abre no Dataset Designer.
Clique com o botão direito do mouse no CustomersTableAdapter e selecione Add Query.
The Assistente de configuração da consulta TableAdapter opens.
Deixe o padrão do Use SQL statements e clique em Next.
Deixe o padrão de SELECT which returns rows e clique em Next.
Substituir a instrução SQL pela seguinte e clique em Next:
SELECT Top 5 CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Fax FROM Customers
Desmarque a caixa de seleção Fill a DataTable.
Nomeie o Return a DataTable Método GetTop5Customers e clique em Finish.
A consulta GetTop5Customers é adicionada ao CustomersTableAdapter.
Modificando a consulta no OrdersTableAdapter para retornar somente pedidos para o cliente desejado
Quando buscar pedidos do banco de dados, não queremos retornar toda a tabela de pedidos; apenas desejamos os pedidos para um cliente específico. O procedimento a seguir detalha como reconfigurar uma TableAdapter com uma nova consulta (em oposição a adicionar uma consulta adicional como nós fizemos para CustomersTableAdapter na etapa anterior).
Para reconfigurar o TableAdapter da consulta principal para retornar um único pedido de cliente.
Clique com o botão direito do mouse no OrdersTableAdapter e escolha Configure.
The Assistente de configuração da consulta TableAdapter opens.
Substituir a instrução SQL pela seguinte e clique em Next:
SELECT OrderID, CustomerID, EmployeeID, OrderDate, RequiredDate, ShippedDate, ShipVia, Freight, ShipName, ShipAddress, ShipCity, ShipRegion, ShipPostalCode, ShipCountry FROM Orders WHERE CustomerID = @CustomerID
Desmarque a caixa de seleção Fill a DataTable.
Nomeie o Return a DataTable Método GetDataByCustomerID e clique em Finish.
A consulta Fill principal do OrdersTableAdapter é substituída pela consulta GetDataByCustomerID.
Construir o projeto selecionando Build Solution da Build menu.
Adicionar código para carregar dados para os objetos cliente e pedido
Para carregar dados em nosso objetos personalizados, você executa as consultas do TableAdapter que retornam novas tabelas de dados (em vez de usar um TableAdapter de consulta que preenchimento existente de tabelas de dados). O código percorre a tabela e preenche cada Customer o objeto com as informações do cliente, além de preencher todos os pedidos em cada Customer.Orders coleção. Observe como cada Customer objeto é adicionado à coleção interna da CustomerBindingSource (CustomerBindingSource.Add(currentCustomer)). O BindingSource fornece uma coleção altamente tipada de Customers que podem ser acessados através do List propriedade.
Para carregar os objetos com dados
No Solution Explorer selecione Form1 e clique em View Code.
Substituir o código em Form1 com o seguinte código:
Public Class Form1 Private Sub LoadCustomers() Dim customerData As NorthwindDataSet.CustomersDataTable = CustomersTableAdapter1.GetTop5Customers() Dim customerRow As NorthwindDataSet.CustomersRow For Each customerRow In customerData Dim currentCustomer As New Customer() With currentCustomer .CustomerID = customerRow.CustomerID .CompanyName = customerRow.CompanyName If Not customerRow.IsAddressNull Then .Address = customerRow.Address End If If Not customerRow.IsCityNull Then .City = customerRow.City End If If Not customerRow.IsContactNameNull Then .ContactName = customerRow.ContactName End If If Not customerRow.IsContactTitleNull Then .ContactTitle = customerRow.ContactTitle End If If Not customerRow.IsCountryNull Then .Country = customerRow.Country End If If Not customerRow.IsFaxNull Then .Fax = customerRow.Fax End If If Not customerRow.IsPhoneNull Then .Phone = customerRow.Phone End If If Not customerRow.IsPostalCodeNull Then .PostalCode = customerRow.PostalCode End If If Not customerRow.Is_RegionNull Then .Region = customerRow._Region End If End With LoadOrders(currentCustomer) CustomerBindingSource.Add(currentCustomer) Next End Sub Private Sub LoadOrders(ByRef currentCustomer As Customer) Dim orderData As NorthwindDataSet.OrdersDataTable = OrdersTableAdapter1.GetDataByCustomerID(currentCustomer.CustomerID) Dim orderRow As NorthwindDataSet.OrdersRow For Each orderRow In orderData Dim currentOrder As New Order() With currentOrder .OrderID = orderRow.OrderID .Customer = currentCustomer If Not orderRow.IsCustomerIDNull Then .CustomerID = orderRow.CustomerID End If If Not orderRow.IsEmployeeIDNull Then .EmployeeID = orderRow.EmployeeID End If If Not orderRow.IsFreightNull Then .Freight = orderRow.Freight End If If Not orderRow.IsOrderDateNull Then .OrderDate = orderRow.OrderDate End If If Not orderRow.IsRequiredDateNull Then .RequiredDate = orderRow.RequiredDate End If If Not orderRow.IsShipAddressNull Then .ShipAddress = orderRow.ShipAddress End If If Not orderRow.IsShipCityNull Then .ShipCity = orderRow.ShipCity End If If Not orderRow.IsShipCountryNull Then .ShipCountry = orderRow.ShipCountry End If If Not orderRow.IsShipNameNull Then .ShipName = orderRow.ShipName End If If Not orderRow.IsShippedDateNull Then .ShippedDate = orderRow.ShippedDate End If If Not orderRow.IsShipPostalCodeNull Then .ShipPostalCode = orderRow.ShipPostalCode End If If Not orderRow.IsShipRegionNull Then .ShipRegion = orderRow.ShipRegion End If If Not orderRow.IsShipViaNull Then .ShipVia = orderRow.ShipVia End If End With currentCustomer.Orders.Add(currentOrder) Next End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load LoadCustomers() End Sub End Class
using System; using System.Windows.Forms; namespace ObjectBindingWalkthrough { public partial class Form1 : Form { public Form1() { InitializeComponent(); this.Load += Form1_Load; } private void LoadCustomers() { NorthwindDataSet.CustomersDataTable customerData = customersTableAdapter1.GetTop5Customers(); foreach (NorthwindDataSet.CustomersRow customerRow in customerData) { Customer currentCustomer = new Customer(); currentCustomer.CustomerID = customerRow.CustomerID; currentCustomer.CompanyName = customerRow.CompanyName; if (customerRow.IsAddressNull() == false) { currentCustomer.Address = customerRow.Address; } if (customerRow.IsCityNull() == false) { currentCustomer.City = customerRow.City; } if (customerRow.IsContactNameNull() == false) { currentCustomer.ContactName = customerRow.ContactName; } if (customerRow.IsContactTitleNull() == false) { currentCustomer.ContactTitle = customerRow.ContactTitle; } if (customerRow.IsCountryNull() == false) { currentCustomer.Country = customerRow.Country; } if (customerRow.IsFaxNull() == false) { currentCustomer.Fax = customerRow.Fax; } if (customerRow.IsPhoneNull() == false) { currentCustomer.Phone = customerRow.Phone; } if (customerRow.IsPostalCodeNull() == false) { currentCustomer.PostalCode = customerRow.PostalCode; } if (customerRow.IsRegionNull() == false) { currentCustomer.Region = customerRow.Region; } LoadOrders(currentCustomer); customerBindingSource.Add(currentCustomer); } } private void LoadOrders(Customer currentCustomer) { NorthwindDataSet.OrdersDataTable orderData = ordersTableAdapter1.GetDataByCustomerID(currentCustomer.CustomerID); foreach (NorthwindDataSet.OrdersRow orderRow in orderData) { Order currentOrder = new Order(); currentOrder.OrderID = orderRow.OrderID; if (orderRow.IsCustomerIDNull() == false) { currentOrder.CustomerID = orderRow.CustomerID; } if (orderRow.IsEmployeeIDNull() == false) { currentOrder.EmployeeID = orderRow.EmployeeID; } if (orderRow.IsFreightNull() == false) { currentOrder.Freight = orderRow.Freight; } if (orderRow.IsOrderDateNull() == false) { currentOrder.OrderDate = orderRow.OrderDate; } if (orderRow.IsRequiredDateNull() == false) { currentOrder.RequiredDate = orderRow.RequiredDate; } if (orderRow.IsShipAddressNull() == false) { currentOrder.ShipAddress = orderRow.ShipAddress; } if (orderRow.IsShipCityNull() == false) { currentOrder.ShipCity = orderRow.ShipCity; } if (orderRow.IsShipCountryNull() == false) { currentOrder.ShipCountry = orderRow.ShipCountry; } if (orderRow.IsShipNameNull() == false) { currentOrder.ShipName = orderRow.ShipName; } if (orderRow.IsShippedDateNull() == false) { currentOrder.ShippedDate = orderRow.ShippedDate; } if (orderRow.IsShipPostalCodeNull() == false) { currentOrder.ShipPostalCode = orderRow.ShipPostalCode; } if (orderRow.IsShipRegionNull() == false) { currentOrder.ShipRegion = orderRow.ShipRegion; } if (orderRow.IsShipViaNull() == false) { currentOrder.ShipVia = orderRow.ShipVia; } currentCustomer.Orders.Add(currentOrder); } } private void Form1_Load(object sender, EventArgs e) { LoadCustomers(); } } }
Testando o aplicativo
Para testar o aplicativo
Pressione F5 para executar o aplicativo.
O formulário abre e os controles DataGridView são preenchidos com os dados de exemplo.
Navegue os clientes em DataGridView para exibir seus pedidos associados.
Próximas etapas
Para adicionar funcionalidade a seu aplicativo
Adicione código para enviar dados dos objetos personalizados de volta para o banco de dados. Para obter mais informações, consulte Como: Acessar diretamente o banco de dados com um TableAdapter.
Reorganize as colunas em DataGridView selecionando Edit Columns na marca inteligente DataGridView .
Consulte também
Conceitos
Controles de vinculação de dados de Visual Studio
Vinculação de objeto no Visual Studio
Outros recursos
Conectando-se a Dados no Visual Studio
Preparando seu aplicativo para receber dados
Buscando dados em seu aplicativo