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 los mostrará en un control DataGrid. Use 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.
Requisitos previos
Necesitará los componentes siguientes para completar este tutorial:
Visual Studio.
Acceder a una instancia en ejecución de SQL Server o SQL Server Express que tenga asociada la base de datos de ejemplo AdventureWorks. Puede descargar la base de datos AdventureWorks desde GitHub.
Creación de clases de entidad
Cree un proyecto de aplicación de WPF en Visual Basic o C# y denomínelo
DataGridSQLExample
.En el Explorador de soluciones, haga clic con el botón derecho en el proyecto, elija Agregar y seleccione Nuevo elemento.
Aparece el cuadro de diálogo Agregar nuevo elemento.
En el panel Plantillas instaladas, seleccione Datos y, en la lista de plantillas, seleccione ADO.NET Entity Data Model.
Asigne un nombre al archivo
AdventureWorksModel.edmx
y, a continuación, haga clic en Agregar.Aparecerá el Asistente para Entity Data Model.
En la pantalla Elegir contenido de del modelo, seleccione Diseñador de EF desde la base de datos y, a continuación, haga clic en Siguiente.
En la pantalla Elegir conexión de datos, proporcione la conexión a la base de datos AdventureWorksLT2008. Para obtener más información, consulte Cuadro de diálogo Elegir la conexión de datos.
Asegúrese de que el nombre sea
AdventureWorksLT2008Entities
y de que la casilla Guardar la configuración de conexión de la entidad en App.Config como esté activada y, a continuación, haga clic en Siguiente.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.
Haga clic en Finalizar
Las entidades Product y ProductCategory se muestran en el Diseñador de entidades.
Recuperación y presentación de los datos
Abra el archivo MainWindow.xaml.
En el editor de XAML, agregue la siguiente etiqueta DataGrid entre las etiquetas
<Grid>
y</Grid>
para agregar un elemento DataGrid denominadodataGrid1
.<DataGrid Name="dataGrid1" />
Seleccione Window.
Con la ventana Propiedades o el editor de XAML, cree un controlador de eventos para el elemento Window denominado
Window_Loaded
para el evento Loaded. Para obtener más información, consulte 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"
porx: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>
Abra el archivo de código subyacente (MainWindow.xaml.vb o MainWindow.xaml.cs) del elemento Window.
Agregue el código siguiente para recuperar solo valores específicos de las tablas combinadas y establezca la propiedad ItemsSource de DataGrid en 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
Ejecute el ejemplo.
Debería ver un objeto DataGrid que muestra los datos.
Vea también
.NET Desktop feedback
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de