Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - DataTable in DataGridView


Klabautermann - Mi 01.08.07 01:13
Titel: DataTable in DataGridView
Hallo,

ich probiere Gerade ein wenig mit C# und Datenbanken rum. Nun möchte ich gerne Daten, welche ich per Quelltext erzeuge, in einem DataGridView abbilden. Zum anlegen der Datenstruktur hat mir dieses Tutorial [http://www.aspheute.com/artikel/20001116.htm] das DataTable Objekt nahe gelegt - aber vielleicht bin ich damit auch auf dem Holzweg.

Meine Frage ist nun, wie Visualisiere ich meine Daten am besten?

Gruß
Klabautermann


Klabautermann - Mi 01.08.07 07:27

Hallo,

nachdem ich mich durch ein Visual Basic Beispiel in diesem Thread [http://www.microsoft.com/communities/newsgroups/en-us/default.aspx?dg=microsoft.public.de.german.entwickler.dotnet.datenbank&tid=f50b4c48-4761-4fee-8c94-96534cdd5678] bei Microsoft gelesen habe gelang es mir eine Lösung zu erarbeiten. Wichtig scheint zu sein ein Passendes DataView an zu legen welches dann an das DataGridView gebunden wird.

Maine Lösung sieht so aus, natürlich bin ich für Optimierungsvorschläge dankbar:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
        private void button1_Click(object sender, EventArgs e)
        {
            DataColumn MyDColumn = null;
            DataRow MyRow = null;
            DataTable MyDTable = new DataTable("Products");
            DataView MyDataView = new DataView(MyDTable);
            MyDTable.CaseSensitive = false;

            MyDColumn = MyDTable.Columns.Add("Spalte1", System.Type.GetType("System.String"));
            MyDColumn = MyDTable.Columns.Add("Spalte2", System.Type.GetType("System.String"));
            MyRow = MyDTable.NewRow();
            MyRow["Spalte1"] = "Test 1";
            MyRow["Spalte2"] = "Test 2";
            MyDTable.Rows.Add(MyRow);
            dataGridView1.DataSource = MyDataView;
            dataGridView1.Refresh();
        }


Gruß
Klabautermann


JüTho - Mi 01.08.07 09:59

Hallo,

auf die DataView kannst Du verzichten; und auch die Variable MyDColumn ist nicht nötig. Das Ganze vereinfacht sich also ein klein wenig, ist aber im Wesentlichen korrekt:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
        private void button1_Click(object sender, EventArgs e)
        {
            DataRow MyRow = null;
            DataTable MyDTable = new DataTable("Products");
            MyDTable.CaseSensitive = false;

            MyDTable.Columns.Add("Spalte1", System.Type.GetType("System.String"));
            MyDTable.Columns.Add("Spalte2", System.Type.GetType("System.String"));
            MyRow = MyDTable.NewRow();
            MyRow["Spalte1"] = "Test 1";
            MyRow["Spalte2"] = "Test 2";
            MyDTable.Rows.Add(MyRow);
            //  hier andere Zuordnung
            dataGridView1.DataSource = MyDTable;
            dataGridView1.Refresh();
        }

Die DataView als DataSource ist nützlich, wenn Du zur Laufzeit variabel selektieren und immer nur einen Teil der Daten anzeigen willst. Beispiel: Die DataTable enthält alle Kombinationen PLZ+Ortsnamen, aktuell suchst Du alle PLZ zu "Berlin".

Gruß Jürgen


Klabautermann - Mi 01.08.07 10:16

Hallo,
user profile iconJüTho hat folgendes geschrieben:
auf die DataView kannst Du verzichten

oh, dann habe ich bei meinen Experimenten wohl zu umständlich gedacht (habe immer Versucht MyDTable.DataSet zu zu weisen aber es nicht direkt probiert :().

user profile iconJüTho hat folgendes geschrieben:
Die DataView als DataSource ist nützlich, wenn Du zur Laufzeit variabel selektieren und immer nur einen Teil der Daten anzeigen willst. Beispiel: Die DataTable enthält alle Kombinationen PLZ+Ortsnamen, aktuell suchst Du alle PLZ zu "Berlin".

Ah, sehr interessant das werde ich mir dann heute Abend mal genauer ansehen.

Danke für die Informationen
Klabautermann