Przewodnik: wyświetlanie danych z bazy danych programu SQL Server w kontrolce DataGrid
W tym przewodniku dane są pobierane z bazy danych programu SQL Server i wyświetlane w kontrolce DataGrid . Użyjesz ADO.NET Entity Framework, aby utworzyć klasy jednostek, które reprezentują dane, i użyć LINQ do zapisania zapytania pobierającego określone dane z klasy jednostki.
Wymagania wstępne
Następujące składniki są wymagane do przeprowadzenia tego instruktażu:
Programu Visual Studio.
Dostęp do uruchomionego wystąpienia programu SQL Server lub programu SQL Server Express z dołączoną przykładową bazą danych AdventureWorks. Bazę danych AdventureWorks można pobrać z usługi GitHub.
Tworzenie klas jednostek
Utwórz nowy projekt aplikacji WPF w Visual Basic lub C#i nadaj mu
DataGridSQLExample
nazwę .W Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt, wskaż polecenie Dodaj, a następnie wybierz pozycję Nowy element.
Zostanie wyświetlone okno dialogowe Dodawanie nowego elementu.
W okienku Zainstalowane szablony wybierz pozycję Dane i na liście szablonów wybierz pozycję ADO.NET Entity Data Model.
Nadaj plikowi
AdventureWorksModel.edmx
nazwę, a następnie kliknij przycisk Dodaj.Zostanie wyświetlony Kreator modelu Entity Data Model.
Na ekranie Wybieranie zawartości modelu wybierz pozycję EF Projektant z bazy danych, a następnie kliknij przycisk Dalej.
Na ekranie Wybieranie danych Połączenie ion podaj połączenie z bazą danych AdventureWorksLT2008. Aby uzyskać więcej informacji, zobacz Wybieranie Połączenie ion danych okno dialogowe.
Upewnij się, że nazwa to
AdventureWorksLT2008Entities
i czy zaznaczono pole wyboru Zapisz ustawienia połączenia jednostki w pliku App.Config , a następnie kliknij przycisk Dalej.Na ekranie Wybieranie obiektów bazy danych rozwiń węzeł Tabele i wybierz tabele Product i ProductCategory .
Można wygenerować klasy jednostek dla wszystkich tabel; jednak w tym przykładzie dane są pobierane tylko z tych dwóch tabel.
Kliknij przycisk Finish (Zakończ).
Jednostki Product i ProductCategory są wyświetlane w Projektant jednostki.
Pobieranie i prezentowanie danych
Otwórz plik MainWindow.xaml.
W edytorze XAML dodaj następujący DataGrid tag między tagami
<Grid>
i</Grid>
, aby dodać nazwany DataGriddataGrid1
element .<DataGrid Name="dataGrid1" />
Wybierz aplikację Window.
Za pomocą edytora okno Właściwości lub XAML utwórz program obsługi zdarzeń dla Window nazwy
Window_Loaded
zdarzeniaLoaded. Aby uzyskać więcej informacji, zobacz Jak utworzyć prostą procedurę obsługi zdarzeń.Poniżej przedstawiono kod XAML dla pliku MainWindow.xaml.
Uwaga
Jeśli używasz języka Visual Basic, w pierwszym wierszu pliku MainWindow.xaml zastąp ciąg
x:Class="DataGridSQLExample.MainWindow"
.x:Class="MainWindow"
<Window x:Class="DataGridSQLExample.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="450" Loaded="Window_Loaded"> <Grid> <DataGrid Name="dataGrid1" /> </Grid> </Window>
Otwórz plik code-behind (MainWindow.xaml.vb lub MainWindow.xaml.cs) dla pliku Window.
Dodaj następujący kod, aby pobrać tylko określone wartości ze sprzężonych tabel i ustawić ItemsSource właściwość na DataGrid wyniki zapytania.
using System.Data.Entity.Core.Objects; using System.Linq; using System.Windows; namespace DataGridSQLExample { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { AdventureWorksLT2008Entities dataEntities = new AdventureWorksLT2008Entities(); public MainWindow() { InitializeComponent(); } private void Window_Loaded(object sender, RoutedEventArgs e) { var query = from product in dataEntities.Products where product.Color == "Red" orderby product.ListPrice select new { product.Name, product.Color, CategoryName = product.ProductCategory.Name, product.ListPrice }; dataGrid1.ItemsSource = query.ToList(); } } }
Imports System.Data.Objects Class MainWindow Dim dataEntities As AdventureWorksLT2008Entities = New AdventureWorksLT2008Entities Private Sub Window_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded Dim products As ObjectQuery(Of Product) = dataEntities.Products Dim query = _ From product In products _ Where product.Color = "Red" _ Order By product.ListPrice _ Select product.Name, product.Color, CategoryName = product.ProductCategory.Name, product.ListPrice dataGrid1.ItemsSource = query.ToList() End Sub End Class
Uruchom przykład.
Powinien zostać wyświetlony element DataGrid , który wyświetla dane.
Zobacz też
.NET Desktop feedback
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla