Názorný postup: Připojení k datům v objektech (model Windows Forms)
Tento názorný postup vytváří objekty pro odběratele a pořadí dat spolu se zdroji dat objektu pro každý objekt.Objekt zdroje dat se zobrazí v Zdroje dat okna: jsou položky přetáhnout z tohoto okna do formuláře můžete vytvořit ovládací prvky vázané na data v veřejné vlastnosti pro každý objekt.Návod také ukazuje, jak lze použít k načtení dat z databáze a naplnit objekty TableAdapters.
Objekt zdroje dat je vytvořen spuštěním Průvodce konfigurací zdroje dat a výběrem objektu jako typ zdroje dat.Po dokončení Průvodce konfigurací zdroje dat, jsou k dispozici ve veřejné vlastnosti objektu Okno zdroje dat a můžete přetáhnout do formuláře.
Úkoly znázorněné v tomto návodu zahrnují následující:
Vytvoření nového Model Windows Forms aplikace projektu.
Vytvoření vlastní objekty představující Zákazníci a objednávky.
Vytváření a konfiguraci zdroje dat objektu, který je založen na vlastní objekty pomocí Průvodce konfigurací zdroje dat.
Přidání ovládacích prvků do formuláře, které jsou vázány na data ve vlastních objektů.
Vytváření objektu dataset s TableAdapters k přesunutí dat mezi objekty a databáze.
Úpravy hlavního dotazu TableAdapter.
Přidání dotazů TableAdapter.
Vyplnění objekty s daty z databáze.
Vytváření projektu
Vytvořit nový projekt aplikace model Windows Forms
Z soubor nabídce vytvořit Nový projekt.
V Typy projektů podokně pod uzlem pro jazyk, který chcete použít, klepněte na tlačítko Windows.
V pod-okně Šablony, klikněte na tlačítko Windows Forms aplikace.
V název zadejte ObjectBindingWalkthrough a na OK.
ObjectBindingWalkthrough projektu je vytvořena a přidána do Aplikaci Solution Explorer.
Tento návod musí některé objekty svázat.Prvním krokem je vytvoření některé vzorové objekty představující Zákazníci a objednávky.Představovat vytvoříme zákazníky Customer objekt, který představuje jediného odběratele.Představovat vytvoříme objednávky Order objektu, který představuje jednu objednávku a Orders objektu, který představuje kolekci Order objektů.Pro sběr Customer použijeme vestavěné v kolekci objektů BindingSource třídy (vysvětleno dále v tomto návodu).
Vytváření objektu zákazníka
Vytvoření objektu zákazníka
V nabídce Projekt klikněte na Přidat třídu.
Název nové třídy zákazníkovi a na Přidat.
Nahradit kód v Customer soubor třídy s následujícím kódem:
[!POZNÁMKA]
Customer Obsahuje objekt ordersCollection vlastnost typu Orders.Editor se zobrazí zpráva s oznámením není definován typ "Objednávky".Tato zpráva je očekávána a zmizí, když vytvoříte Order a Orders tříd v další části.
''' <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 + ")"; } } }
Vytvoření pořadí objektů
Vytvoření objektu objednávky a objednávky kolekce
Na projektu nabídce vyberte Přidat třídu.
Název nové třídy pořadí a na Přidat.
Nahradit kód v Order soubor třídy s následujícím kódem:
''' <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> { } }
Z soubor nabídce zvolte Uložit všechny.
Vytváření objektu zdroje dat.
Můžete vytvořit zdroj dat založený na objekty vytvořené v předchozím kroku spuštěnou Průvodce konfigurací zdroje dat.
Vytvořit zdroj dat objektu
Sestavte projekt.
[!POZNÁMKA]
Projekt je nutné vytvořit před objekty v projektu může být vybrána v Průvodce konfigurací zdroje dat.
Otevřít Zdroje dat okno klepnutím Data nabídce a výběr Zobrazit zdroje dat.
Klepněte na tlačítko Přidat nový zdroj dat v Zdroje dat okna.
Spustí se Průvodce konfigurací zdroje dat.
Na Vyberte typ zdroje dat stránky vyberte objektua klepněte na tlačítko Další.
Na Vyberte datové objekty stránky, rozbalte položku ObjectBindingWalkthrough uzly a kontrola vyberte pole vedle zákazníkovi objektu.
Klepněte na tlačítko Dokončit.
Zákazníkovi objekt se objeví v Zdroje dat okna.
Vytváření formuláře vázán na Data
Ovládací prvky vázané na Customer objektu jsou vytvořené přetažením položek z Zdroje dat okna do formuláře.
Vytvoření formuláře s ovládací prvky vázané k vlastnosti objektu
V Aplikaci Solution Explorer, vyberte Form1a klepněte na tlačítko Návrhář zobrazení.
Přetáhněte zákazníka z uzlu Zdroje dat okna do Form1.
Rozbalte zákazníkovi uzel a přetáhněte objednávky uzlu z Zdroje dat okna do Form1.
Vytváření TableAdapters k načtení dat z databáze do vlastní objekty
Chcete-li přesunout data mezi objekty a databází, použijeme TableAdapters.TableAdapters u tabulky Zákazníci a objednávky můžete vytvořit pomocí Průvodce konfigurací zdroje dat.
Vytvořit TableAdapters
Z Data nabídce zvolte Přidat nový zdroj dat.
Na Vyberte typ zdroje dat stránky vyberte databázea klepněte na tlačítko Další.
Na zvolit Model databáze stránky vyberte Dataseta klepněte na tlačítko Další.
Na Zvolte datové připojení stránky, použijte jednu z následujících postupů:
Pokud datové připojení k ukázkové databázi Northwind je k dispozici v rozevíracím seznamu, vyberte ji.
-nebo-
Vyberte Nové připojení konfigurace nové datové připojení k databázi Northwind.Další informace naleznete v tématu Jak: připojení k datům v databázi.
Po výběru datového připojení, klepněte na tlačítko Další.
Na Uložit řetězec připojení v souboru konfigurace aplikace klepněte na možnost Další.
Na zvolit databázové objekty stránky, rozbalte položku tabulek uzel.
Vyberte Zákazníci a objednávky tabulky a pak klepněte na tlačítko Dokončit.
NorthwindDataSet je do projektu a Zákazníci a objednávky tabulky se zobrazí v Zdroje dat okně NorthwindDataSet uzel.
Přidání Form1 Dataset a TableAdapters
Instance můžete přidat CustomersTableAdapter, OrdersTableAdapter, a NorthwindDataSet do formuláře přetažením jejich reprezentativní součásti z nástrojů.
Vyplníte zákazníka objekty dat z tabulky Zákazníci
V nabídce Sestavení vyberte příkaz Vytvořit řešení.
Přetáhněte NorthwindDataSet z nástrojů na Form1.
Přetáhněte CustomersTableAdapter z nástrojů na Form1.
Přetáhněte OrdersTableAdapter z nástrojů na Form1.
Přidání dotazu CustomersTableAdapter vrátit pouze několik zákazníků.
Skutečné aplikací budou pravděpodobně nikdy vrátíte celé tabulky dat.Tento návod jsme vrátí nejvyšší pět zákazníků.
[!POZNÁMKA]
Obvykle by předání parametru vybrat zákazníky, kterým se chcete vrátit, ale pro stručnost v tomto bude pevný kód dotaz vrátit pouze pět zákazníků a eliminovat potřebu vytvoření uživatelského rozhraní pro zadávání hodnot parametrů.
Přidat další dotaz do CustomersTableAdapter
V Aplikaci Solution Explorer, poklepejte na soubor NorthwindDataSet.xsd.
NorthwindDataSet otevře Dataset Návrhář.
Klepněte pravým tlačítkem myši CustomersTableAdapter a vyberte Dotazu přidat.
Ponechte výchozí příkazy SQL pomocí a na Další.
Ponechte výchozí Vybrat, která vrací řádky a na Další.
Nahradit následující příkaz SQL a klepněte na tlačítko Další:
SELECT Top 5 CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Fax FROM Customers
Vymazat výplně objektu DataTable políčko.
Název vrátit DataTable metody GetTop5Customers a na Dokončit.
GetTop5Customers je do dotazu CustomersTableAdapter.
Úprava dotazu na OrdersTableAdapter K vrácení pouze objednávky pro potřeby zákazníka
Při načítání objednávek z databáze, nikoli chceme vrátit celou tabulku objednávky; Chceme pouze objednávky pro určitého zákazníka.Následující postup obsahuje podrobné informace o konfiguraci TableAdapter s nový dotaz (aby jsme stejně k přidání další dotaz CustomersTableAdapter v předchozím kroku).
Znovu TableAdapter hlavní dotaz vrátit objednávky pro jediného odběratele
Klepněte pravým tlačítkem myši OrdersTableAdapter a zvolte Konfigurace.
Nahradit následující příkaz SQL a klepněte na tlačítko Další:
SELECT OrderID, CustomerID, EmployeeID, OrderDate, RequiredDate, ShippedDate, ShipVia, Freight, ShipName, ShipAddress, ShipCity, ShipRegion, ShipPostalCode, ShipCountry FROM Orders WHERE CustomerID = @CustomerID
Vymazat výplně objektu DataTable políčko.
Název vrátit DataTable metody GetDataByCustomerID a na Dokončit.
Na OrdersTableAdapter hlavní Fill dotazu je nahrazen GetDataByCustomerID dotazu.
Vytvořte projekt výběrem Sestavit řešení z sestavení nabídce.
Přidání kódu k načtení dat do odběratele a pořadí objektů
Chcete-li načíst data do naší vlastní objekty, spouštět dotazy TableAdapter, které vracejí nové data tabulky (nikoli pomocí TableAdapter dotazy že výplně existujících tabulek dat).Kód pak prochází tabulky a vyplní každou Customer objekt s informace o zákazníkovi Kromě naplnění všech objednávek v každém Customer.Orders kolekce.Všimněte si, jak každý Customer objekt přidán do vnitřní kolekce CustomerBindingSource (CustomerBindingSource.Add(currentCustomer)).BindingSource Poskytuje silný integrovaný kolekce Customers lze přistupovat prostřednictvím List vlastnost.
Načtení objektů s daty
V Aplikaci Solution Explorer, vyberte Form1a klepněte na tlačítko Zobrazení kódu.
Nahradit kód v Form1 s následujícím kódem:
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(); } } }
Testování aplikace
Testování aplikace
Stisknutím klávesy F5 spustíte aplikaci.
Otevře se formulář a DataGridView ovládací prvky jsou zaplněny ukázková data.
Zákazníci v navigaci DataGridView zobrazí jejich související objednávky.
Další kroky
K přidání funkcí do aplikace
Přidání kódu k odesílání dat z vlastní objekty zpět do databáze.Další informace naleznete v tématu Jak: přímý přístup k databázi s TableAdapter.
Pořadí sloupců DataGridView výběrem Upravit sloupce na DataGridView inteligentní značka.
Viz také
Koncepty
Příprava aplikace pro příjem dat.
Ovládací prvky vazby na Data v aplikaci Visual Studio
Vazby na objekt v aplikaci Visual Studio