Compartir a través de


Tutorial: Mostrar datos de una base de datos de SQL Server en un control DataGrid

En este tutorial, recuperará datos de una base de datos de SQL Server y mostrará esos datos en un DataGrid control . Use el ADO.NET Entity Framework para crear las clases de entidad que representan los datos y use LINQ para escribir una consulta que recupere los datos especificados de una clase de entidad.

Prerrequisitos

Necesitará los componentes siguientes para completar este tutorial:

  • Visual Studio.

  • Acceso a una instancia en ejecución de SQL Server o SQL Server Express que tiene asociada la base de datos de ejemplo AdventureWorks. Puede descargar la base de datos AdventureWorks desde GitHub.

Creación de clases de entidad

  1. Cree un nuevo proyecto de aplicación de WPF en Visual Basic o C#, y asígnelo DataGridSQLExampleel nombre .

  2. En el Explorador de soluciones, haga clic con el botón derecho en el proyecto, seleccione Agregar y, a continuación, seleccione Nuevo elemento.

    Aparece el cuadro de diálogo Agregar nuevo elemento.

  3. En el panel Plantillas instaladas, seleccione Datos y, en la lista de plantillas, seleccione ADO.NET Entity Data Model.

    plantilla de elemento del modelo de datos de entidad de ADO.NET

  4. Asigne un nombre al archivo AdventureWorksModel.edmx y haga clic en Agregar.

    Aparece el Asistente para modelos de datos de entidad.

  5. En la pantalla Elegir contenido del modelo, seleccione EF Designer en la base de datos y, a continuación, haga clic en Siguiente.

  6. En la pantalla Elegir la conexión de datos, proporcione la conexión a la base de datos AdventureWorksLT2008. Para obtener más información, vea Elegir la conexión de datos (cuadro de diálogo).

    Asegúrese de que el nombre es AdventureWorksLT2008Entities y que la casilla Guardar configuración de conexión de entidad en App.Config como está activada y, a continuación, haga clic en Siguiente.

  7. En la pantalla Elegir los objetos de base de datos, expanda el nodo Tablas y seleccione las tablas Product y ProductCategory .

    Puede generar clases de entidad para todas las tablas; sin embargo, en este ejemplo solo se recuperan datos de esas dos tablas.

    Seleccione Product y ProductCategory en las tablas

  8. Haga clic en Finalizar

    Las entidades Product y ProductCategory se muestran en el Diseñador de entidades.

    Modelos de entidad de Producto y Categoría de producto

Recuperar y presentar los datos

  1. Abra el archivo MainWindow.xaml.

  2. Establezca la propiedad Width en el Window a 450.

  3. En el editor XAML, agregue la siguiente DataGrid etiqueta entre las <Grid> etiquetas y </Grid> para agregar un DataGrid denominado dataGrid1.

    <DataGrid Name="dataGrid1" />
    

    Ventana con DataGrid

  4. Seleccione Window.

  5. Con la ventana Propiedades o el editor XAML, cree un controlador de eventos para el Window denominado Window_Loaded para el Loaded evento. Para obtener más información, vea How to: Create a Simple Event Handler.

    A continuación se muestra el CÓDIGO XAML para MainWindow.xaml.

    Nota:

    Si usa Visual Basic, en la primera línea de MainWindow.xaml, reemplace 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. Abra el archivo de código subyacente (MainWindow.xaml.vb o MainWindow.xaml.cs) para el Window.

  7. Agregue el siguiente código para recuperar solo valores específicos de las tablas combinadas y establecer la propiedad ItemsSource de DataGrid a los resultados de la 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. Ejecute el ejemplo.

    Debería ver un DataGrid que muestra los datos.

    DataGrid con datos de la base de datos SQL

Consulte también