Wiązanie kontrolek Windows Forms z danymi w aplikacjach .NET Framework

Uwaga

Zestawy danych i powiązane klasy to starsze technologie .NET Framework z początku 2000 roku, które umożliwiają aplikacjom pracę z danymi w pamięci, gdy aplikacje są odłączone od bazy danych. Są one szczególnie przydatne w przypadku aplikacji, które umożliwiają użytkownikom modyfikowanie danych i utrwalanie zmian z powrotem w bazie danych. Mimo że zestawy danych okazały się bardzo udaną technologią, zalecamy, aby nowe aplikacje platformy .NET używały platformy Entity Framework Core. Program Entity Framework zapewnia bardziej naturalny sposób pracy z danymi tabelarycznymi jako modelami obiektów i ma prostszy interfejs programowania.

Dane dla użytkowników aplikacji można wyświetlać, wiążąc dane z formularzami systemu Windows. Aby utworzyć te kontrolki powiązane z danymi, przeciągnij elementy z okna Źródła danych do Projektant Formularzy systemu Windows w programie Visual Studio.

Data Source drag operation

Napiwek

Jeśli okno Źródła danych nie jest widoczne, możesz go otworzyć, wybierając pozycję Wyświetl>inne źródła danych systemu Windows>lub naciskając klawisze Shift+Alt+D. Aby wyświetlić okno Źródła danych, musisz mieć otwarty projekt w programie Visual Studio.

Przed przeciągnięciem elementów można ustawić typ kontrolki, z którą chcesz powiązać. Różne wartości są wyświetlane w zależności od tego, czy wybrano samą tabelę, czy pojedynczą kolumnę. Można również ustawić wartości niestandardowe. W przypadku tabeli Szczegóły oznacza, że każda kolumna jest powiązana z oddzielną kontrolką.

Bind data source to DataGridView

Kontrolki BindingSource i BindingNavigator

Składnik BindingSource służy do dwóch celów. Najpierw zapewnia warstwę abstrakcji podczas wiązania kontrolek z danymi. Kontrolki w formularzu są powiązane ze BindingSource składnikiem zamiast bezpośrednio ze źródłem danych. Po drugie, może zarządzać kolekcją obiektów. Dodanie typu do obiektu BindingSource powoduje utworzenie listy tego typu.

Aby uzyskać więcej informacji na temat BindingSource składnika, zobacz:

Kontrolka BindingNavigator udostępnia interfejs użytkownika do nawigowania po danych wyświetlanych przez aplikację systemu Windows.

Wiązanie z danymi w kontrolce DataGridView

W przypadku kontrolki DataGridView cała tabela jest powiązana z jedną kontrolką. Po przeciągnięciu kontrolki DataGridView do formularza pojawia się również pasek narzędzi do nawigowania po rekordach (BindingNavigator). Zestaw danych, TableAdapter, BindingSourcei BindingNavigator pojawi się na pasku składników. Na poniższej ilustracji dodano również tabelę TableAdapterManager , ponieważ tabela Customers ma relację z tabelą Orders (Zamówienia). Wszystkie te zmienne są deklarowane w kodzie generowanym automatycznie jako prywatne elementy członkowskie w klasie formularzy. Wygenerowany automatycznie kod do wypełniania elementu DataGridView znajduje się w procedurze obsługi zdarzeń Form_Load . Kod zapisywania danych w celu zaktualizowania bazy danych znajduje się w Save procedurze obsługi zdarzeń dla elementu BindingNavigator. Możesz przenieść lub zmodyfikować ten kod zgodnie z potrzebami.

GridView with BindingNavigator

Zachowanie kontrolki DataGridView i BindingNavigator można dostosować, klikając tag inteligentny w prawym górnym rogu każdego elementu:

DataGridView and Binding Navigator smart tags

Jeśli kontrolki wymagane przez aplikację nie są dostępne w oknie Źródła danych, możesz dodać kontrolki. Aby uzyskać więcej informacji, zobacz Dodawanie kontrolek niestandardowych do okna Źródła danych.

Możesz również przeciągać elementy z okna Źródła danych na kontrolki znajdujące się już w formularzu, aby powiązać kontrolkę z danymi. Kontrolka, która jest już powiązana z danymi, ma zresetowane powiązania danych do ostatnio przeciągniętego elementu. Aby być prawidłowymi miejscami docelowymi upuszczania, kontrolki muszą mieć możliwość wyświetlania bazowego typu danych elementu przeciągniętego do niego z okna Źródła danych. Na przykład nie jest prawidłowe przeciąganie elementu, który ma typ DateTime danych na CheckBoxelement , ponieważ CheckBox nie jest w stanie wyświetlić daty.

Wiązanie z danymi w poszczególnych kontrolkach

Po powiązaniu źródła danych ze szczegółami każda kolumna w zestawie danych jest powiązana z oddzielną kontrolką.

Bind data source to details

Ważne

Pamiętaj, że na poprzedniej ilustracji przeciągnij z właściwości Orders tabeli Customers, a nie z tabeli Orders (Zamówienia). Po powiązaniu Customer.Orders z właściwością polecenia nawigacji wykonane w kontrolce DataGridView są natychmiast odzwierciedlane w kontrolkach szczegółów. W przypadku przeciągnięcia z tabeli Orders kontrolki nadal będą powiązane z zestawem danych, ale nie zostaną zsynchronizowane z elementem DataGridView.

Na poniższej ilustracji przedstawiono domyślne kontrolki powiązane z danymi, które są dodawane do formularza po właściwości Orders w tabeli Customers jest powiązana ze szczegółami w oknie Źródła danych.

Orders table bound to details

Należy również pamiętać, że każda kontrolka ma tag inteligentny. Ten tag umożliwia dostosowania, które mają zastosowanie tylko do tej kontrolki.