Wskazówki: łączenie z danymi w obiektach (formularze systemu Windows)
W tym instruktażu tworzy obiekty, aby pomieścić klientów i danych zamówienia, wraz ze źródłem danych obiektu dla każdego obiektu.Obiekt źródła danych, pojawia się w Źródła danych okna: elementy są przeciągane z tego okna na formularz do tworzenia formantów, które są powiązane z danymi w publicznych właściwości dla każdego obiektu.Instruktaż również pokazuje, jak użyć TableAdapters do pobierania danych z bazy danych i wypełniać obiekty.
Obiekt źródła danych jest tworzony przez uruchomienie Kreator konfiguracji źródła danych i wybierając obiektu jako typ źródła danych.Po zakończeniu pracy Kreatora konfiguracji źródła danych, publiczne właściwości obiektu są dostępne w Okno źródła danych i może zostać przeciągnięte do formularza.
Zadania w tym instruktażu są następujące:
Tworzenie nowego Aplikacji Windows Forms projektu.
Tworzenie niestandardowych obiektów do reprezentowania klienci i zamówienia.
Tworzenie i konfigurowanie źródła danych obiektu, oparty na niestandardowych obiektów za pomocą Kreatora konfiguracji źródła danych.
Dodawanie formantów do formularza, które są powiązane z danymi w niestandardowych obiektów.
Tworzenie zestawu danych z TableAdapters do przenoszenia danych między obiekty i bazy danych.
Edytowanie TableAdapter w głównej kwerendzie.
Kwerendy, dodając do TableAdapter.
Podczas wypełniania obiektów z danych z bazy danych.
Tworzenie projektu
Aby utworzyć nowy projekt aplikacji Windows Forms
Z pliku menu, tworzyć Nowy projekt.
W Typów projektów okienku w węźle języka, który ma być używany, kliknij polecenie Windows.
W szablonów okienka, kliknij Aplikacji Windows Forms.
W Nazwa wpisz ObjectBindingWalkthrough i kliknij przycisk OK.
ObjectBindingWalkthrough projektu jest tworzony i dodawany do Solution Explorer.
W tym instruktażu potrzebuje niektóre obiekty, które chcesz powiązać.Pierwszym krokiem jest utworzenie niektóre obiekty próbki do reprezentowania klienci i zamówienia.Do reprezentowania klientów zostanie utworzony Customer obiekt, który reprezentuje jednego odbiorcy.Do reprezentowania zamówienia zostanie utworzony Order obiekt, który reprezentuje pojedynczego zamówienia, i Orders obiekt, który reprezentuje kolekcję Order obiektów.Do zbierania Customer obiektów użyjemy wbudowanych kolekcji w BindingSource klasy (wyjaśnione w dalszej części tego instruktażu).
Tworzenie obiektu klienta
Aby utworzyć obiekt klienta
Na Projekt menu, kliknij przycisk Add Class.
Nazwa nowej klasy klienta i kliknij przycisk Dodaj.
Zastąp kod w Customer plik klasy następującym kodem:
[!UWAGA]
Customer Zawiera obiektu ordersCollection właściwość typ Orders.Edytor wyświetli komunikat z informacją nie zdefiniowano typu "Zamówienia".Ten komunikat jest oczekiwany i zniknie podczas tworzenia Order i Orders klasy w następnej sekcji.
''' <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 + ")"; } } }
Tworzenie obiektów zamówienia
Aby utworzyć obiekt zamówienia i pobierania zamówień
Na Projekt menu, wybierz opcję Add Class.
Nazwa nowej klasy zamówienia i kliknij przycisk Dodaj.
Zastąp kod w Order plik klasy następującym kodem:
''' <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 pliku menu, wybierz polecenie Zapisz wszystkie.
Tworzenie obiektu źródła danych
Można utworzyć źródło danych, obiekty utworzone w poprzednim kroku, uruchamiając na podstawie Kreatora konfiguracji źródła danych.
Aby utworzyć obiekt źródła danych
Budowanie projektu.
[!UWAGA]
Należy utworzyć projekt przed obiektów w projekcie można wybrać w Kreatora konfiguracji źródła danych.
Otwórz Źródła danych okno klikając danych menu i wybierając Pokaż źródeł danych.
Kliknij przycisk Dodać nowe źródło danych w Źródła danych okna.
Kreatora konfiguracji źródła danych rozpoczyna się.
Na Wybierz typ źródła danych stronę, wybierz opcję obiektu, a następnie kliknij przycisk Dalej.
Na Zaznacz obiekty danych stronę, a następnie rozwiń ObjectBindingWalkthrough pole obok węzłów i wybierz polecenie Kontrola klienta obiektu.
Kliknij przycisk Zakończenie.
Klienta obiekt pojawia się w Źródła danych okna.
Tworzenie formularza powiązanego z danymi
Formanty związane z Customer obiektu są tworzone przez przeciąganie elementów z Źródła danych okno formularza.
Aby utworzyć formularz z formantami związanymi z właściwości obiektu
W Solution Explorer, wybierz opcję formularz Form1i kliknij przycisk Projektanta widoku.
Przeciągnij klienta węzła z Źródła danych okna na formularz Form1.
Rozwiń węzeł klienta węzeł i przeciągnij zamówienia węzła z Źródła danych okna na formularz Form1.
Tworzenie TableAdapters do ładowania danych z bazy danych do obiektów niestandardowych
Do przenoszenia danych między obiektami i bazą danych, używamy TableAdapters.TableAdapters można utworzyć tabele Klienci i zamówienia, za pomocą Kreator konfiguracji źródła danych.
Aby utworzyć TableAdapters
Z danych menu, wybierz polecenie Dodać nowe źródło danych.
Na Wybierz typ źródła danych stronę, wybierz opcję bazy danych, a następnie kliknij przycisk Dalej.
Na Wybierz Model bazy danych stronę, wybierz opcję Dataset, a następnie kliknij przycisk Dalej.
Na Wybieranie połączenia danych stronie, użyj jednej z następujących procedur:
Jeśli połączenie danych z przykładowej bazy danych Northwind jest dostępna na liście rozwijanej, należy go zaznaczyć.
- lub -
Wybierz Nowe połączenie do skonfigurowania nowego połączenia danych do bazy danych Northwind.Aby uzyskać więcej informacji, zobacz Porady: łączenie z danymi w bazie danych.
Po wybraniu połączenia danych, kliknij przycisk Dalej.
Na zapisać ciąg połączenia w pliku konfiguracyjnym aplikacji strony, kliknij przycisk Dalej.
Na Wybierz obiekty bazy danych stronę, a następnie rozwiń tabel węzła.
Wybierz Klienci i zamówienia tabel, a następnie kliknij przycisk Zakończenie.
NorthwindDataSet jest dodawany do projektu i Klienci i zamówienia tabele zostaną wyświetlone w Źródeł danych okno pod NorthwindDataSet węzła.
Dodanie do formularza Form1 Dataset i TableAdapters
Można dodać wystąpień CustomersTableAdapter, OrdersTableAdapter, i NorthwindDataSet do formularza przez przeciąganie ich reprezentatywnymi częściami z Przybornik.
Aby wypełnić obiekty klienta przy użyciu danych z tabeli Klienci
Z budować menu wybierz Roztwór budować.
Przeciągnij NorthwindDataSet z Przybornik na formularz Form1.
Przeciągnij CustomersTableAdapter z Przybornik na formularz Form1.
Przeciągnij OrdersTableAdapter z Przybornik na formularz Form1.
Dodawanie kwerendy do CustomersTableAdapter do zwracania tylko kilku klientów
W aplikacjach rzeczywistych będzie prawdopodobnie nigdy nie wrócisz całej tabeli danych.Dla tego instruktażu zwracamy top pięciu klientów.
[!UWAGA]
Będzie zazwyczaj przekazuje się w parametrze zaznacz klientów, które użytkownik chce powrócić, ale dla skrócenia zapisu w tym instruktażu będziemy kodowane kwerenda zwraca tylko pięciu klientów i eliminuje potrzebę tworzenia interfejs użytkownika umożliwiający wprowadzanie wartości parametru.
Aby dodać dodatkowych kwerend do CustomersTableAdapter
W Solution Explorer, kliknij dwukrotnie plik NorthwindDataSet.xsd.
NorthwindDataSet otwiera się w Projektant Dataset.
Kliknij prawym przyciskiem myszy CustomersTableAdapter i wybierz Kwerendy dodaj.
Pozostaw domyślną z instrukcji SQL wykorzystania i kliknij przycisk Dalej.
Pozostaw domyślną z Wybierz, która zwraca wierszy i kliknij przycisk Dalej.
Zamienić instrukcję SQL z następujących czynności, a następnie kliknij przycisk Dalej:
SELECT Top 5 CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Fax FROM Customers
Wyczyść wypełnienia z elementu DataTable pole wyboru.
Nazwa zwraca element DataTable metoda GetTop5Customers i kliknij przycisk Zakończenie.
GetTop5Customers kwerenda jest dodawana do CustomersTableAdapter.
Modyfikowanie kwerendy na OrdersTableAdapter do zwrotu tylko zamówienia dla żądanego klienta
Gdy pobieranie zamówienia z bazy danych, nie chcemy zwrotu całej tabeli zamówienia; chcemy tylko zamówienia dla konkretnego klienta.Poniższa procedura szczegółowe informacje dotyczące sposobu ponownie TableAdapter z nowej kwerendy (w przeciwieństwie do dodawania dodatkowych kwerend, jak postąpiliśmy z CustomersTableAdapter w poprzednim kroku).
Aby ponownie skonfigurować TableAdapter głównej kwerendy do jednego odbiorcy, zamówienia zwrotu
Kliknij prawym przyciskiem myszy OrdersTableAdapter i wybierz polecenie Konfigurowanie.
Zamienić instrukcję SQL z następujących czynności, a następnie kliknij przycisk Dalej:
SELECT OrderID, CustomerID, EmployeeID, OrderDate, RequiredDate, ShippedDate, ShipVia, Freight, ShipName, ShipAddress, ShipCity, ShipRegion, ShipPostalCode, ShipCountry FROM Orders WHERE CustomerID = @CustomerID
Wyczyść wypełnienia z elementu DataTable pole wyboru.
Nazwa zwraca element DataTable metoda GetDataByCustomerID i kliknij przycisk Zakończenie.
Na OrdersTableAdapter główne Fill kwerenda jest zastępowany GetDataByCustomerID kwerendy.
Skompiluj projekt przez wybranie Roztwór budować z budować menu.
Dodawanie kodu do ładowania danych do klienta i kolejność obiektów
Do ładowania danych do naszych niestandardowych obiektów, można wykonać kwerendy TableAdapter, które zwracają nowe tabele danych (zamiast przy użyciu TableAdapter kwerendy wypełnienia, że istniejące tabele danych).Kod, a następnie w pętli przegląda tabelę i wypełnia każdego Customer obiekt z informacje o kliencie, dodatkowo do wypełniania wszystkich zamówień w każdym Customer.Orders kolekcji.Należy zauważyć, jak każda Customer obiekt jest dodawany do wewnętrznej kolekcji CustomerBindingSource (CustomerBindingSource.Add(currentCustomer)).BindingSource Zawiera wbudowaną jednoznacznie określony zbiór Customers , mogą być udostępniane za pośrednictwem List właściwości.
Aby załadować obiekty z danymi
W Solution Explorer, wybierz opcję formularz Form1i kliknij przycisk Widok Kod.
Zastąp kod w formularz Form1 z następującego kodu:
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(); } } }
Testowanie aplikacji
Aby przetestować aplikację
Naciśnij klawisz F5, aby uruchomić aplikację.
Formularz jest otwierany i DataGridView formanty są wypełniane przykładowych danych.
Przejdź do klientów w DataGridView , aby wyświetlić ich skojarzone zamówienia.
Następne kroki
Aby dodać funkcjonalność aplikacji
Dodawanie kodu do wysyłania danych z obiektów niestandardowych z bazą.Aby uzyskać więcej informacji, zobacz Porady: bezpośredni dostęp do bazy danych za pomocą TableAdapter.
Ponowne rozmieszczanie kolumn w DataGridView przez wybranie Edytuj kolumny na DataGridView tag inteligentny.
Zobacz też
Koncepcje
Przygotowywanie aplikacji na otrzymywanie danych
Pobieranie danych do aplikacji
Powiązywanie kontrolek z danymi w Visual Studio
Powiązanie obiektów w Visual Studio