Compartilhar via


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

Nesta explicação, você pode recuperar dados de um banco de dados de SQL Server e exibir os dados em um DataGrid de controle. Você usar o ADO.NET Entity Framework para criar classes de entidade que representam os dados e usam o LINQ para escrever uma consulta que recupera os dados especificados de uma classe de entidade.

Pré-requisitos

You need the following components to complete this walkthrough:

  • Visual Studio 2010.

  • Acesso a uma instância em execução de SQL Server ou SQL Server Express tem o banco de dados de exemplo AdventureWorksLT2008 anexado a ele. Você pode baixar o banco de dados de AdventureWorksLT2008 a site CodePlex da.

To create entity classes

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

  2. No Solution Explorer, clique com o botão direito do projeto, aponte para Adde selecione Novo Item.

    O Add New Item caixa de diálogo aparece.

  3. No painel Installed Templates, selecione dados e na lista de modelos, selecione ADO.Modo de dados de entidade de NETl.

    Selecionar Modelo de Dados de Entidade ADO.NET

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

    O Assistente de modelo de dados de entidade aparece.

  5. Na tela Escolher o conteúdo do modelo, selecione gerar do banco de dados e, em seguida, clique em próximo.

    Selecionar a opção de gerar a partir do banco de dados

  6. Na tela Choose Your Data Connection, fornecem a conexão ao banco de dados AdventureWorksLT2008. Para obter mais informações, consulte Escolha sua conexão caixa de diálogo dados.

    Fornecer conexão com banco de dados

  7. Certifique-se de que o nome é AdventureWorksLT2008Entities e que o Salvar configurações de conexão de entidade em app. config, como caixa de seleção está selecionada e clique em próximo.

  8. Na tela Escolha seus objetos de banco de dados, expanda o nó Tables e selecione o produto e ProductCategory tabelas.

    Você pode gerar classes de entidade para todas as tabelas; No entanto, neste exemplo apenas recuperar dados dessas duas tabelas.

    Selecionar Product e ProductCategory em tabelas

  9. Click Finish.

    As entidades de produto e ProductCategory são exibidas no Designer de entidade.

    Modelos de entidade Product e ProductCategory

Para recuperar e apresentar os dados

  1. Abra o arquivo de MainWindow. XAML.

  2. Definir o Width propriedade no Window para 450.

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

    <DataGrid Name="dataGrid1" />
    

    Janela com DataGrid

  4. Selecione o Window.

  5. Usando a janela de propriedades ou o editor de XAML, crie um manipulador de eventos para o Window chamado Window_Loaded para o Loaded de evento. For more information, see How to: Create a Simple Event Handler.

    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" com x:Class="MainWindow".

    <Window x:Class="DataGridSQLExample.MainWindow"
            xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="450" 
            Loaded="Window_Loaded">
        <Grid>
            <DataGrid Name="dataGrid1" />
        </Grid>
    </Window>
    
  6. Abrir o arquivo code-behind (MainWindow.xaml.vb ou MainWindow.xaml.cs) para o Window.

  7. Adicione o seguinte código para recuperar somente os valores específicos de tabelas associadas e definir o ItemsSource propriedade da DataGrid os resultados da consulta.

    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
    
    using System.Data.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)
            {
                ObjectQuery<Product> products = dataEntities.Products;
    
                var query =
                from product in products
                where product.Color == "Red"
                orderby product.ListPrice
                select new { product.Name, product.Color, CategoryName = product.ProductCategory.Name, product.ListPrice };
    
                dataGrid1.ItemsSource = query.ToList();
            }
        }
    }
    
  8. Execute o exemplo.

    Você deve ver um DataGrid que exibe dados.

    DataGrid com dados de banco de dados SQL

Consulte também

Referência

DataGrid

Outros recursos

Como faço Começar com o Entity Framework em aplicativos WPF?