IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: WPF načtení dat z databáze do DataGridu

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
N-nojmi
Člen
Avatar
N-nojmi:21.8.2014 14:47

Zdravím,
zasekl jsem se v projektu na tom, že nedokážu načíst data z databáze do DataGridu. Při spuštění, aplikace padne na chybu

An unhandled exception of type 'System.TypeInitializationException' occurred in PresentationFramework.dll

Byl bych rád, kdyby mi někdo řekl v čem dělám chybu.

Kód:

XAML:

<Window x:Class="WpfDataGrid.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">

    <Grid>
        <DataGrid Name="dtgKnihy"  Height="150" Width="300" />
    </Grid>
</Window>

Kód:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;


namespace WpfDataGrid
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        SqlConnection cn;
        SqlDataAdapter da;
        DataSet ds;

        public MainWindow()
        {
            InitializeComponent();
            cn = new SqlConnection(@"Data Source=NOJMI-PC; Integrated Security=true");
            cn.Open();
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            da = new SqlDataAdapter("SELECT * FROM Kniha", cn);
            ds = new DataSet();
            da.Fill(ds);
            dtgKnihy.ItemsSource = ds.Tables[0].DefaultView;
        }
    }
}
Odpovědět
21.8.2014 14:47
Není hloupých lidí, jen lidí co málo používají google...
Avatar
Lako
Člen
Avatar
Odpovídá na N-nojmi
Lako:21.8.2014 21:50

za 1.: Používej Entity framework, ušetříš si do budoucna dost práce a vyhneš se těmto překonaným věcem, jako je dotazování se do databáze pomocí stringů.
za 2.: kde přesně ti to padá?
za 3.: když ti to padne, koukne se na View Detail u té chybové hlášky a otevři si inner exception, zjistíš pak víc.. to sem napiš.

 
Nahoru Odpovědět
21.8.2014 21:50
Avatar
vodslon
Člen
Avatar
Odpovídá na N-nojmi
vodslon:22.8.2014 9:33

Ahoj,

Třeba je to blbost, ale na první pohled tam nemáš název databáze nad kterou to bude dělat select.

 
Nahoru Odpovědět
22.8.2014 9:33
Avatar
Odpovídá na N-nojmi
Michal Štěpánek:22.8.2014 10:45
  1. jak píše **vodslon, nevidím tam název databáze
  2. spojení s databází by mělo být otevřeno jen na dobu nezbytně nutnou, tzn. před provedením dotazu otevřít a po provedení dotazu zase zavřít.
Nahoru Odpovědět
22.8.2014 10:45
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.