Compartilhar via


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

Neste passo a passo, você recupera dados de um banco de dados do SQL Server e exibe esses dados em um controle DataGrid. Use o ADO.NET Entity Framework para criar as classes de entidade que representam os dados e use LINQ para gravar uma consulta que recupere 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 do SQL Server Express que tem 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 no 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 Modelo de Dados de Entidade ADO.NET.

    modelo de item do Modelo de Dados de Entidade Modelo de item do Modelo de Dados de Entidade ADO.NET

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

    O Assistente de Modelo de Dados de Entidade é exibido.

  5. Na tela Escolher Conteúdo do Modelo, selecione Designer EF no banco de dados e clique em Próximo.

  6. Na tela Escolher Sua Conexão de Dados, forneça a conexão com seu banco de dados AdventureWorksLT2008. Para obter mais informações, consulte Escolher uma Caixa de Diálogo de Conexão de Dados.

    Certifique-se de que o nome é AdventureWorksLT2008Entities e que a caixa de seleção Salvar configurações de conexão de entidade em App.Config como está selecionada e, em seguida, clique em Próximo.

  7. Na tela Escolher Objetos de Banco de Dados, expanda o nó Tabelas e selecione as tabelas Product e ProductCategory.

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

    Selecione Product e ProductCategory nas tabelas

  8. Clique em Concluir.

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

    modelos de entidade Modelos de entidade Product e ProductCategory

Recuperar e apresentar os dados

  1. Abra o arquivo MainWindow.xaml.

  2. Defina a propriedade Width no Window como 450.

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

    <DataGrid Name="dataGrid1" />
    

    Janela com DataGrid Janela com DataGrid

  4. Selecione o 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.

    O exemplo 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 code-behind (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ê deve ver um DataGrid que exibe dados.

    DataGrid com dados do banco de dados SQL

Consulte também