Wie funktioniert dieses Datagrid?



  • Hi,

    ich versuch jetzt schon seit 6 Stunden mittels Datagrid eine Tabelle einzubinden, die ich kurz vorher mit dem Serverexplorer (MSDE SQL Server) erstellt habe.

    Ich habe jetzt auf dem Formular das Datagrib und darunter einen sqlDatadapter1 und ne sqlConnection1. klicke ich jetzt rechts auf den Adapter dann kann ich ein Dataset generieren und lass die dem Designer hinzufügen. Dieses nutze ich dann als Quelle für mein Datagrib (Datasource: DataSet1)

    Wenn ich nun aber den Sourcecode compilieren will, dann bringt der mir "Der Typ DataSet1 wurde nicht gefunden. stellen Sie sicher, dass auf die Assembly, die diesen Typ enthält, verwiesen wird. .." (die Datei DataSet1.xsd ist in meiner Projektmappe vorhanden)

    Im Quellcode gibts in der Klasse Einkaufsliste (mein übungsprojekt) die Anweisung private Einkaufsliste.DataSet1 dataSet11; und bei mouseover über DataSet1 schimpft er was von "Der Typ oder Namespacename DataSet1 ist in der Klasse oder dem Namespace Einkaufsliste.Einkaufsliste nicht vorhanden (fehlt ein Assembly).

    Was muß ich nun tun? Hab wie gesagt realtiv null Plan von OOP und sitze nun etwas hilflos hier vorm Rechner. Ich dachte der Wizzard macht alles von alleine - scheinbar war das ein Irrtum. 😞



  • medi schrieb:

    Ich dachte der Wizzard macht alles von alleine - scheinbar war das ein Irrtum. 😞

    Was auch gut so ist.

    Ich geb Dir einen Beispiel Code, lern erstmal das codieren, dann kannst Du die Wizzards immernoch benutzen.

    SqlConnection conn = new SqlConnection( "Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;" );
    SqlCommand cmd = new SqlCommand( "SELECT * FROM Customers", conn );
    SqlDataAdapter da = new SqlDataAdapter( cmd );
    DataSet ds = new DataSet();
    da.Fill( ds );
    dataGridView.DataSource = ds.Tables[0];
    

    Du musst evtl. noch System.Data und System.Data.SqlClient als Namespace einbinden.



  • hi,

    erstmal danke für den beispielcode. hat mir recht gut weitergeholfen.

    dann: die klasse dataGridView gibs bei mir nicht. wenn ich dafür die klasse DataGrid nehme gibts allerdings keine Methode namens Datasource...was denn nun?

    und dann noch etwas: kannst du mir ein nettes C# Buch empfehlen? ich scheitere ja jetzt schon am ändern der labeltexte (labelname.Text funzt irgendwie nicht)



  • Also, folgender Code, sollte funktionieren, wenn Du ihn z.B. in das Form_Load Event kopierst.

    SqlConnection conn = new SqlConnection("Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;");
    SqlCommand cmd = new SqlCommand("SELECT * FROM Customers", conn);
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataSet ds = new DataSet();
    DataGrid grid = new DataGrid();
    grid.Location = new Point(10, 10);
    grid.Size = new Size( 300, 500 );
    da.Fill(ds);
    grid.DataSource = ds.Tables[0];
    this.Controls.Add(grid);
    

    Du solltest Dich vielleicht mal Klassen und Instanzen von Klassen auseinander setzen. Ein Buch, hmm, wie fit bist Du? Für Windows Programmierung würde ich den Petzold empfehlen, denn da lernst/liest Du wie alles ohne Designer/Wizzard -unterstützung entwickelt wird.



  • juhu es funktioniert...danke 🙂



  • ok nächstes problem:

    ich hab jetzt herausgefunden wie ich ne XML Datei öffne, den Inhalt ins DataGrid einfüge und dann wieder als XML file speichern kann. Jetzt will ich einfach ne Zeile ins Datagrid einfügen (sozusagen nen neuen Datensatz beim Drücken eines Buttons anlegen). Nun spuckt mir die Hilfe aus, dass ich ne DataTable dafür erstellen muss. Stimmt das oder kann man auch direkt mit dem DataGrid arbeiten? wenn ja wie? (hab dazu nix weiter gefunden)



  • Datagrid.DataSource.

    Folgende Datenquellen sind gültig:

    Eine DataTable
    Eine DataView
    Ein DataSet
    Ein DataViewManager
    Eine beliebige Komponente, die die IListSource-Schnittstelle implementiert
    Eine beliebige Komponente, die die IList-Schnittstelle implementiert

    Verwende doch ein DataSet, dieses hat auch 2 Methoden für XML Dateien ( ReadXml und WriteXml ).



  • mach ich doch - oder hab ich da wieder was durcheinander gebracht *grübel*

    also ich lese ne xml datei aus und fülle damit ein dataset, welches über einem datagrid ausgegeben wird. jetzt muss ich wohl das dataset erweitern und dann wieder als xml file abspeichern, wenn ich sozusagen neue datensätze ins xml file eintragen möchte. nur wie erweitere ich das dataset? muss ich dafür ne datatable erstellen und das dann irgendwie mergen oder geht das auch einfacher?



  • In dem DataSet ist bereits eine DataTable enthalten, in der Deine Daten drinstehen.

    dataSet.Tables[name oder index]



  • ah ok und die bearbeite ich und schreib die ins dataset zurück oder bearbeite ich das dataset automatisch wenn ich die datatable bearbeite?



  • Beim Laden des Grids oder der Form:

    dataSet.ReadXml( "C:\\..." );
    dataGrid.DataSource = ds.Tables[0];
    

    Fürs speichern:

    dataSet.WriteXml( "C:\\..." );
    


  • öhm ich glaub du hast mich nicht verstanden...das was du da geschrieben hast weiß ich bereits schon...ich möchte wissen wie ich vorgehen muss, wenn ich das dataset bzw. die datatable bearbeiten will. das ich das dataset dann als xml file speichern kann ist mir durchaus bewußt. 😉



  • DataRow row = dataSet.Tables[0].NewRow();
    row["..."] = ...;
    dataSet.Tables[0].Rows.Add( row );
    

    So in der Art.



  • ok danke funktioniert prächtig 🙂


Anmelden zum Antworten