Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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
Do ukończenia tego przewodnika potrzebne są następujące składniki:
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 witryny GitHub.
Tworzenie klas jednostek
Utwórz nowy projekt aplikacji WPF w Visual Basic lub C#i nadaj mu nazwę
DataGridSQLExample
.W Eksploratorze Rozwiązań kliknij prawym przyciskiem myszy na 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, a na liście szablonów wybierz pozycję ADO.NET Entity Data Model.
szablon elementu modelu danych jednostki
Nadaj plikowi nazwę
AdventureWorksModel.edmx
, a następnie kliknij pozycję Dodaj.Zostanie wyświetlony Kreator modelu danych jednostki.
Na ekranie Wybór zawartości modelu wybierz EF Designer z bazy danych, a następnie kliknij Dalej.
Na ekranie Wybieranie połączenia danych podaj informacje dotyczące połączenia z bazą danych AdventureWorksLT2008. Aby uzyskać więcej informacji, zobacz okno dialogowe Wybieranie połączenia danych.
Upewnij się, że nazwa jest
AdventureWorksLT2008Entities
i że zaznaczono pole wyboru Zapisz ustawienia połączenia jednostki w pliku App.Config jako, a następnie kliknij przycisk Dalej.Na ekranie Wybierz swoje obiekty bazy danych rozwiń węzeł tabel i wybierz tabelę Product oraz tabelę 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 Projektancie jednostek.
modele encji
Pobieranie i prezentowanie danych
Otwórz plik MainWindow.xaml.
W edytorze XAML dodaj następujący tag DataGrid między tagami
<Grid>
i</Grid>
, aby dodać DataGrid o nazwiedataGrid1
.<DataGrid Name="dataGrid1" />
okno
Wybierz Window.
Za pomocą okna Właściwości lub edytora XAML utwórz program obsługi zdarzeń dla Window o nazwie
Window_Loaded
dla zdarzenia Loaded. Aby uzyskać więcej informacji, zobacz How to: Create a Simple Event Handler.Poniżej przedstawiono kod XAML dla pliku MainWindow.xaml.
Uwaga / Notatka
Jeśli używasz języka Visual Basic, w pierwszym wierszu pliku MainWindow.xaml zastąp
x:Class="DataGridSQLExample.MainWindow"
ciągiemx: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 kodu zaplecza (MainWindow.xaml.vb lub MainWindow.xaml.cs) dla Window.
Dodaj następujący kod, aby pobrać tylko określone wartości z połączonych tabel i ustawić właściwość ItemsSource dla DataGrid na podstawie wyników 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 DataGrid, który wyświetla dane.
Zobacz także
.NET Desktop feedback