Partilhar via


Passo a passo: Exibir dados de um banco de dados do SQL Server em um controle DataGrid

Nesta explicação passo a passo, você recupera dados de um banco de dados do SQL Server e exibe esses dados em um controle de DataGrid. Use o ADO.NET Entity Framework para criar as classes de entidade que representam os dados e use LINQ para escrever uma consulta que recupera os dados especificados de uma classe de entidade.

Pré-requisitos

Você precisa dos seguintes componentes para concluir este passo a passo:

  • Visual Studio.

  • Acesso a uma instância em execução do SQL Server ou SQL Server Express que tenha o banco de dados de exemplo AdventureWorks anexado a ele. Você pode baixar o banco de dados AdventureWorks do GitHub.

Criar classes de entidade

  1. Crie um novo projeto de aplicativo WPF em Visual Basic ou C# e nomeie-o DataGridSQLExample.

  2. No Gerenciador de Soluções, clique com o botão direito do mouse em seu projeto, aponte para Adicionare selecione Novo Item.

    A caixa de diálogo Adicionar Novo Item é exibida.

  3. No painel Modelos Instalados, selecione Dados e, na lista de modelos, selecione ADO.NET Modelo de Dados de Entidade.

    modelo de item ADO.NET Entity Data Model

  4. Nomeie o arquivo AdventureWorksModel.edmx e clique em Adicionar.

    O Assistente de Modelo de Dados de Entidade é exibido.

  5. No ecrã Escolher Conteúdo do Modelo, selecione EF Designer da base de dados e clique em Avançar.

  6. Na tela Escolha sua conexão de dados, forneça a conexão com seu banco de dados AdventureWorksLT2008. Para obter mais informações, consulte caixa de diálogo Escolha a Sua Ligação de Dados.

    Verifique se o nome é AdventureWorksLT2008Entities e se a caixa de seleção Salvar configurações de conexão de entidade em App.Config como está marcada e clique em Avançar.

  7. No ecrã "Escolha os seus objetos de base de dados", expanda o nó "Tabelas" e selecione as tabelas Produto e Categoria de Produto.

    Você pode gerar classes de entidade para todas as tabelas; no entanto, neste exemplo, você só recupera dados dessas duas tabelas.

    Selecione Produto e Categoria de Produto nas tabelas

  8. Clique em Concluir.

    As entidades Product e ProductCategory são exibidas no Entity Designer.

    modelos de entidades Product e ProductCategory

Recuperar e apresentar os dados

  1. Abra o arquivo MainWindow.xaml.

  2. Configure a propriedade Width no Window para 450.

  3. No editor XAML, adicione a seguinte tag DataGrid entre as tags <Grid> e </Grid> para adicionar um DataGrid chamado dataGrid1.

    <DataGrid Name="dataGrid1" />
    

    Janela com DataGrid

  4. Selecione a Window.

  5. Usando a janela Propriedades ou o editor XAML, crie um manipulador de eventos para o Window chamado Window_Loaded para o evento Loaded. Para obter mais informações, consulte Como criar um manipulador de eventos simples.

    A seguir mostra o XAML para MainWindow.xaml.

    Observação

    Se você estiver usando o Visual Basic, na primeira linha de MainWindow.xaml, substitua x:Class="DataGridSQLExample.MainWindow" por 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. Abra o arquivo de código-fonte subjacente (MainWindow.xaml.vb ou MainWindow.xaml.cs) para o Window.

  7. Adicione o código a seguir para recuperar apenas valores específicos das tabelas unidas e defina a propriedade ItemsSource do DataGrid para os resultados da consulta.

    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. Execute o exemplo.

    Você verá um DataGrid que exibe dados.

    DataGrid com dados do banco de dados SQL

Ver também