Compartilhar via


Demonstra 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 DataGrid controle. O ADO.NET Entity Framework é usado para criar as classes de entidade que representam os dados e o LINQ é usado para gravar uma consulta que recupera os dados especificados de uma classe de entidade.

Pré-requisitos

Você precisará dos seguintes componentes para concluir este passo a passo:

  • Do Visual Studio.

  • Acesso a uma instância em execução do SQL Server ou do 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 do WPF no Visual Basic ou no C#, chamado DataGridSQLExample.

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

    A caixa de diálogo Adicionar Novo Item aparecerá.

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

    ADO.NET Entity Data Model item template

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

    O Assistente do Modelo de Dados de Entidade é aberto.

  5. Na tela Escolher Conteúdo do Modelo, selecione EF Designer no banco de dados e clique em Avançar.

  6. Na tela Escolher a Conexão de Dados, forneça a conexão ao banco de dados AdventureWorksLT2008. Para obter mais informações, consulte Escolher uma Caixa de Diálogo de Conexã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. Na tela Escolher Objetos de Banco de Dados, expanda o nó Tabelas e selecione as tabelas Product e ProductCategory.

    É possível gerar classes de entidade para todas as tabelas; no entanto, neste exemplo, somente os dados dessas duas tabelas serão recuperados.

    Select Product and ProductCategory from tables

  8. Clique em Concluir.

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

    Product and ProductCategory entity models

Recuperar e apresentar os dados

  1. Abra o arquivo MainWindow.xaml.

  2. Defina a WidthWindow propriedade como 450.

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

    <DataGrid Name="dataGrid1" />
    

    Window with DataGrid

  4. Selecione o Window.

  5. Usando a janela Propriedades ou o editor XAML, crie um manipulador de eventos para o nome Window_Loaded do WindowLoaded evento. Para obter mais informações, consulte Instruções: como criar um manipulador de eventos simples.

    O exemplo a seguir mostra o XAML de 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 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 ItemsSource propriedade do DataGrid para os resultados da consulta.

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

    Você deve ver um DataGrid que exibe dados.

    DataGrid with data from SQL database

Confira também