none
Mostrar datos en un DataGrid a partir de un DataTable RRS feed

  • Pregunta

  • Buenas !
    Desde hace un par de días ando buscando por la red una manera de Mostrar unos datos almacenados en una base de datos Access 2007 dentro de un DataGrid de WPF

    Mi intención es hacerlo desde codigo y sin agregar un origen de datos... en WinForms con el datagriedView eh conseguido hacerlo pero en WPF aun no encuentro la manera, lo unico que se me ocurrio fue hacer algo así:

    OleDbConnection cnn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=BD.accdb");           // Creo la Conexión a la BD
                OleDbDataAdapter cmd = new OleDbDataAdapter("SELECT * FROM Tabla1", cnn);            // Extraigo la información que necesito
                DataTable dt = new DataTable();      // Creo un DataTable
                cmd.Fill(dt);       // Lleno el DataTable con la información extraida
                dataGrid1.DataContext = dt;        // Muestro la información del datatable en el DataGrid    
                cnn.Close();       // Cierro la Conexión
    

    Este codigo lo tengo en la función Click de un Botón pero cuando lo presiono ningun dato aparece en el Grid y tampoco sale algún error...

    NOTA: Agregue un nuevo origen de datos en un proyecto aparte, y una de las tablas la arrastre a mi formulario y me creo un DataGrid, use el codigo y efectivamente el Grid mostraba los datos... Buscando un poco dentro del codigo XAML encontre que si a este Grid le eliminaba esta parte: ItemSource="{Binding}" el DataGrid en el modo diseñador no me mostraba las celdas y el codigo dejaba de funcionar pero si lo dejaba funcionaba de maravilla

    ¿Me podrian explicar porfavor que es un Binding?
    ¿Como podria hacer uno sin agregar un origen de datos y enlazarlo a mi Grid?
    ¿o Existe alguna otra manera sencilla de llenar el Grid?, solo necesito mostrar los datos almacenados en una tabla de la BD y esta no tiene relación con algun otra

    Agradeceria mucho su ayuda

    lunes, 12 de septiembre de 2011 3:25

Todas las respuestas

  • Ya solucione mi problema.....

    Solo tuve que agregarle al codigo XAML lo siguiente:

    <DataGrid AutoGenerateColumns="False" EnableRowVirtualization="True" Height="116" HorizontalAlignment="Left" ItemsSource="{Binding}" Margin="51,96,0,0" Name="tabla1DataGrid" RowDetailsVisibilityMode="VisibleWhenSelected" VerticalAlignment="Top" Width="234">
                <DataGrid.Columns>
                    <DataGridTextColumn x:Name="nombreColumn" Binding="{Binding Path=Nombre}" Header="Nombre" Width="SizeToHeader" />
                    <DataGridTextColumn x:Name="cargoColumn" Binding="{Binding Path=Cargo}" Header="Cargo" Width="SizeToHeader" />
                </DataGrid.Columns>
            </DataGrid>
    

    Y al Codigo en el .CS

    OleDbConnection cnn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=BD.accdb");            
                OleDbDataAdapter cmd = new OleDbDataAdapter("SELECT * FROM Tabla1", cnn);            
                DataTable dt = new DataTable();
                cmd.Fill(dt);
                tabla1DataGrid.DataContext = dt;
    

    Ahora tengo un pequeño problema.... Algunas ocaciones cuando Depuro una solución mi PC emite dos Beep, los 3 leds del teclado se encienden y se apagan y y luego vuelve a la normalidad, pero la velocidad de escritura del teclado se reduce....

    Cuando ejecute este codigo, funciono sin errores pero paso lo que mencione a continuación y en ocaciones me ha sucedido con otros codigos....

    ¿Habra algún problema con el codigo que haga que mi PC reaccione de esta manera?

    lunes, 12 de septiembre de 2011 3:50
  • Hola David 00695, se que esta conversación es un poco vieja, pero he seguido tu ejemplo para mostrar en un DataGrid en wpf una consulta select la cual usa LIKE pero el DataGrid no me muestra ningún dato, me puedes colaborar a solucionar este lio, gracias

    jorge duran

    jueves, 5 de noviembre de 2015 3:52