none
WPF Datagrid mit Daten aus Dataset füllen RRS feed

  • Frage

  • Hallo zusammen,

    in einer WPF-Anwendung soll ein Datagrid mit Daten aus einem Dataset gefüllt werden. Zum Testen benutze ich Daten der Beispieldatenbank Northwind, es wird ein SQLCompactServer4.0 verwendet. Die Daten sollen beim Laden des Fensters eingefüllt werden, jedenfalls jetzt zum Testen. Es kommt aber immer die Fehlermeldung "Argument Exception : Illegales Zeichen im Pfad".

    Mein Code:

     Northwind40DataSet dataSet = new Northwind40DataSet(); 
    
    //TableAdapter erzeugen
                Northwind40DataSetTableAdapters.CustomersTableAdapter myTa = new Northwind40DataSetTableAdapters.CustomersTableAdapter();
                myTa.Fill(dataSet.Customers);
                this.DataContext = dataSet.Customers.DefaultView;

    Woran liegt das? Was muss ich bei dieser Ausnahme tun?

    Wenn ich die Zeile "myTa.Fill(dataSet.Customers);" auskommentiere wird angezeigt, aber selbstverständlich nur die Tabellenheader. Derselbe Code funktioniert in einer älteren Anwendung im VisualStudio 2010 problemlos.

    Herzlichen Dank im Voraus

    Ottilie Steinhauer 

    Montag, 13. Mai 2013 12:13

Antworten

  • Hallo Ottilie,

    bitte kontrolliere die Verbindungszeichenfolge die beim DataSet verwendet wird - zu finden in der App.Config. Wahrscheinlich zeigt die Verbindung auf eine nicht (mehr) vorhanden SQL Server Datenbankdatei.

    Gruß Elmar

    • Als Antwort vorgeschlagen Ionut DumaModerator Montag, 13. Mai 2013 14:41
    • Als Antwort markiert ottilie Dienstag, 14. Mai 2013 10:31
    Montag, 13. Mai 2013 12:29
  • Hallo Ottilie,

    hast Du evtl. das DataDirectory festgelegt, zu finden u. a bei:
    http://erikej.blogspot.de/2011/02/using-sql-server-compact-40-with.html

    mit:

    private void Application_Startup(object sender, StartupEventArgs e)
            {
                // This is our connection string: Data Source=|DataDirectory|\Chinook40.sdf
                // Set the data directory to the users %AppData% folder
                // So the Chinook40.sdf file must be placed in:  C:\\Users\\<Username>\\AppData\\Roaming\\
                AppDomain.CurrentDomain.SetData("DataDirectory", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData));
            }

    oder entsprechend.

    Was den Effekt haben könnte, das auf ein ungültiges Verzeichnis zugegriffen wird.

    Gruß Elmar

    • Als Antwort markiert ottilie Dienstag, 14. Mai 2013 10:31
    Montag, 13. Mai 2013 15:14

Alle Antworten

  • Hallo Ottilie,

    bitte kontrolliere die Verbindungszeichenfolge die beim DataSet verwendet wird - zu finden in der App.Config. Wahrscheinlich zeigt die Verbindung auf eine nicht (mehr) vorhanden SQL Server Datenbankdatei.

    Gruß Elmar

    • Als Antwort vorgeschlagen Ionut DumaModerator Montag, 13. Mai 2013 14:41
    • Als Antwort markiert ottilie Dienstag, 14. Mai 2013 10:31
    Montag, 13. Mai 2013 12:29
  • Hallo Elmar,

    erstmal vielen Dank für die schnelle Antwort. In App.Config ist eingetragen:

     connectionString="Data Source=|DataDirectory|\Northwind40.sdf"

    Die Datenbank liegt auch im Projektordner.

    DataSource = C:\Users\Ottilie\documents\visual studio 2012\Projects\RiskAnalyzerTest2\RiskAnalyzerTest2\Northwind40.sdf; auch die Testverbindung klappt. Immerhin ist das Programm auch in der Lage die Header der Tabellen auszulesen.

     In VisualStudio 2010 sind die Angaben analog, alles funktioniert.

    Gruß

    Ottilie

    Hallo Elmar,

    wahrscheinlich lag es doch an der Verbindung, auch wenn ich nicht herausfinde wo. Ich habe das Testprojekt neu aufgesetzt und alles läuft.

    Herzlichen Dank

    Ottilie

    • Bearbeitet ottilie Montag, 13. Mai 2013 13:40
    Montag, 13. Mai 2013 13:17
  • Hallo Ottilie,

    Wenn Dir die Antwort von Elmar geholfen hat, dann bitte markiere diese als Antwort.

    Danke und Gruss,

    Ionut

    Montag, 13. Mai 2013 14:42
    Moderator
  • Hallo Ottilie,

    hast Du evtl. das DataDirectory festgelegt, zu finden u. a bei:
    http://erikej.blogspot.de/2011/02/using-sql-server-compact-40-with.html

    mit:

    private void Application_Startup(object sender, StartupEventArgs e)
            {
                // This is our connection string: Data Source=|DataDirectory|\Chinook40.sdf
                // Set the data directory to the users %AppData% folder
                // So the Chinook40.sdf file must be placed in:  C:\\Users\\<Username>\\AppData\\Roaming\\
                AppDomain.CurrentDomain.SetData("DataDirectory", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData));
            }

    oder entsprechend.

    Was den Effekt haben könnte, das auf ein ungültiges Verzeichnis zugegriffen wird.

    Gruß Elmar

    • Als Antwort markiert ottilie Dienstag, 14. Mai 2013 10:31
    Montag, 13. Mai 2013 15:14