Tutorial: Mostrar los 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 control DataGrid. Usará ADO.NET Entity Framework para crear las clases de entidad que representan los datos y usará LINQ para escribir una consulta que recupera los datos especificados de una clase de entidad.
Requisitos previos
Necesita los componentes siguientes para completar este tutorial:
Visual Studio 2010.
Acceso a una instancia en ejecución de SQL Server o SQL Server Express que tenga adjunta la base de datos de ejemplo AdventureWorksLT2008. La base de datos AdventureWorksLT2008 se puede descargar desde el sitio web de CodePlex.
Para crear clases de entidad
Cree un nuevo proyecto de aplicación WPF en Visual Basic o C# y asígnele el nombre DataGridSQLExample.
En el Explorador de soluciones, haga clic con el botón secundario en el proyecto, elija Agregar y seleccione Nuevo elemento.
Aparecerá el cuadro de diálogo Agregar nuevo elemento.
En el recuadro Plantillas instaladas, seleccione Datos y, en la lista de plantillas, seleccione Modelo de datos de entidad de ADO.NET.
Asigne al archivo el nombre AdventureWorksModel.edmx y haga clic en Agregar.
Aparecerá el Asistente para Entity Data Model.
En la pantalla Elegir contenido de Model, seleccione Generar desde la base de datos y haga clic en Siguiente.
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 Cuadro de diálogo Elegir la conexión de datos.
Asegúrese de que el nombre sea AdventureWorksLT2008Entities y que la casilla Guardar configuración de conexión de la entidad en App.Config como esté activada; a continuación, haga clic en Siguiente.
En la pantalla Elija 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 recupera datos de esas dos tablas.
Haga clic en Finalizar.
Las entidades Product y ProductCategory se mostrarán en Entity Designer.
Para recuperar y presentar los datos
Abra el archivo MainWindow.xaml.
En el editor XAML, agregue la siguiente etiqueta DataGrid entre las etiquetas <Grid> y </Grid> para agregar un objeto DataGrid denominado dataGrid1.
<DataGrid Name="dataGrid1" />
Seleccione Window.
Usando la ventana Propiedades o el editor XAML, cree un controlador de eventos para Window denominado Window_Loaded para el evento Loaded. Para obtener más información, vea Cómo: Crear controladores de eventos simples.
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" por 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>
Abra el archivo de código subyacente (MainWindow.xaml.vb o MainWindow.xaml.cs) para Window.
Agregue el código siguiente para recuperar solo determinados valores de las tablas combinadas y establecer la propiedad ItemsSource de DataGrid en los resultados de la 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(); } } }
Ejecute el ejemplo.
Debe aparecer un control DataGrid que muestre datos.
Vea también
Referencia
Otros recursos
How Do I: Get Started with Entity Framework in WPF Applications?