Condividi tramite


Procedura dettagliata: Visualizzare i dati da un database di SQL Server in un controllo DataGrid

In questa guida passo-passo, si recuperano dati da un database di SQL Server e si visualizzano in un controllo DataGrid. Usare il ADO.NET Entity Framework per creare le classi di entità che rappresentano i dati e usare LINQ per scrivere una query che recupera i dati specificati da una classe di entità.

Prerequisiti

Per completare questa procedura dettagliata sono necessari i componenti seguenti:

  • Visual Studio.

  • Accesso a un'istanza in esecuzione di SQL Server o SQL Server Express a cui è collegato il database di esempio AdventureWorks. È possibile scaricare il database AdventureWorks dal GitHub.

Creare classi di entità

  1. Creare un nuovo progetto applicazione WPF in Visual Basic o C# e denominarlo DataGridSQLExample.

  2. In Esplora soluzioni, fai clic con il pulsante destro del mouse sul tuo progetto, seleziona Aggiungie quindi Nuovo elemento.

    Verrà visualizzata la finestra di dialogo Aggiungi nuovo elemento.

  3. Nel riquadro Modelli installati selezionare Data e nell'elenco dei modelli selezionare ADO.NET Entity Data Model.

    modello di elemento di ADO.NET Entity Data Model

  4. Assegnare al file il nome AdventureWorksModel.edmx e quindi fare clic su Aggiungi.

    Viene visualizzata la Creazione guidata modello di dati di entità.

  5. Nella schermata Choose Model Contents (Scegli il contenuto del modello), selezionare EF Designer dal database e quindi fare clic su Avanti.

  6. Nella schermata Scegli connessione dati specificare la connessione al database AdventureWorksLT2008. Per ulteriori informazioni, vedere la finestra di dialogo Scegliere la connessione dati.

    Assicurarsi che il nome sia AdventureWorksLT2008Entities e che sia selezionata la casella di controllo Salva le impostazioni di connessione dell'entità in App.Config come e quindi fare clic su Avanti.

  7. Nella schermata Scegli oggetti di database, espandere il nodo Tabelle e selezionare le tabelle Product e ProductCategory.

    È possibile generare classi di entità per tutte le tabelle; Tuttavia, in questo esempio si recuperano solo i dati da queste due tabelle.

    Selezionare Prodotto e la ProductCategory dalle tabelle

  8. Fare clic su Fine.

    Le entità Product e ProductCategory vengono visualizzate in Entity Designer.

    modelli di entità Product e ProductCategory

Recuperare e presentare i dati

  1. Aprire il file MainWindow.xaml.

  2. Impostare la proprietà Width nel Window su 450.

  3. Nell'editor XAML aggiungere il tag di DataGrid seguente tra i tag <Grid> e </Grid> per aggiungere un DataGrid denominato dataGrid1.

    <DataGrid Name="dataGrid1" />
    

    finestra con datagrid

  4. Seleziona il Window.

  5. Usando la finestra delle proprietà o l'editor XAML, creare un gestore di eventi per il Window denominato Window_Loaded per l'evento Loaded. Per altre informazioni, vedere Procedura: Creare un gestore eventi semplice.

    Di seguito viene illustrato il codice XAML per MainWindow.xaml.

    Annotazioni

    Se si usa Visual Basic, nella prima riga di MainWindow.xaml sostituire x:Class="DataGridSQLExample.MainWindow" con 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>
    
  6. Apri il file code-behind (MainWindow.xaml.vb o MainWindow.xaml.cs) per il Window.

  7. Aggiungere il codice seguente per recuperare solo i valori specifici dalle tabelle unite e impostare la proprietà ItemsSource del DataGrid sui risultati della query.

    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.Linq
    
    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 query = _
                From product In dataEntities.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
    
  8. Esegui l'esempio.

    Dovreste vedere un DataGrid che visualizza i dati.

    DataGrid con dati dal database SQL

Vedere anche