DataTable aus DataGridView Erstellen
Möchte aus einem DataGridView ein DataTabele erstellen. (VB.NET 2008)
Hallo alle zusammen,
gibt es ne möglichkeit aus einem DataGridView ein DataTabele zu erstellen ?
Mir ist klar das ich das sicher über Schleifen usw. Kapieren kann aber gibt es da nicht ein .NET Hausmittel dafür ...
bin eigentlich kein großer Fan von diesen Schleifen Kopier Geschichten ...
Habe im internet folgendes Gefunden:
How to get a DataSet from DataGrid
http://social.msdn.microsoft.com/Forums/en/adodotnetdataset/thread/0a8c ...
aber leider werde ich aus dem was die Schreiben nicht wirklich schlau. Allerdings scheint es hier funktioniert zu haven --> Rahtlosigkeit
Hat jemand da eine Idee ?
Hallo alle zusammen,
gibt es ne möglichkeit aus einem DataGridView ein DataTabele zu erstellen ?
Mir ist klar das ich das sicher über Schleifen usw. Kapieren kann aber gibt es da nicht ein .NET Hausmittel dafür ...
bin eigentlich kein großer Fan von diesen Schleifen Kopier Geschichten ...
Habe im internet folgendes Gefunden:
How to get a DataSet from DataGrid
http://social.msdn.microsoft.com/Forums/en/adodotnetdataset/thread/0a8c ...
aber leider werde ich aus dem was die Schreiben nicht wirklich schlau. Allerdings scheint es hier funktioniert zu haven --> Rahtlosigkeit
Hat jemand da eine Idee ?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 144329
Url: https://administrator.de/contentid/144329
Ausgedruckt am: 22.11.2024 um 12:11 Uhr
6 Kommentare
Neuester Kommentar
Hi,
nicht das ich wüsste. Aber warum erstellst du nicht eine DataTable und legst die DataGridView.DataSource-Eigenschaft entsprechend fest.
Ansonsten kommst du wohl um deine gehassten Schleifen nicht herum (Beispiel für ein DGV mit einer Spalte):
nicht das ich wüsste. Aber warum erstellst du nicht eine DataTable und legst die DataGridView.DataSource-Eigenschaft entsprechend fest.
Ansonsten kommst du wohl um deine gehassten Schleifen nicht herum (Beispiel für ein DGV mit einer Spalte):
DataGridViewRowCollection coll = dataGridView1.Rows;
DataTable t = new DataTable();
t.Columns.Add();
foreach (DataGridViewRow item in coll)
{
t.Rows.Add(item.Cells.Value);
}
Nochmal ich, nachdem du deinen Beitrag erweitert hast.
Scheinbar fehlen Dir grundlegende Kenntnisse zum DataGridView und der Darstellung von Daten darin. Lies mal das hier DataGridView.DataSource. Das hilft bestimmt weiter.
Grüße
Scheinbar fehlen Dir grundlegende Kenntnisse zum DataGridView und der Darstellung von Daten darin. Lies mal das hier DataGridView.DataSource. Das hilft bestimmt weiter.
Grüße
Hi,
1. Ja, das ist C#. Die Übersetzung von C# nach VB und umgekehrt sollte aber nicht soo ein großen Problem darstellen.
2. Nein, meinen Post hast du nicht richtig interpretiert:
Deine Frage war ob es eine Möglichkeit gibt "aus einem DataGridView eine DataTable zu erstellen". Dies habe ich mit dem Post beantwortet. Die Lösung wäre eine neue DataTable zu erstellen und diese mit der entsprechenden Anzahl von Spalten (wie im DataGridView) auszustatten und danach zeilenweise die Zellen des DataGridView in die DataTable zu kopieren.
Was du nicht erwähnt hattest (und auch nach wie vor nicht wirklich schreibst), dass du offenbar eine Datenquelle benutzt; s. u. "weil einige spalten im Grid erst beim Füllen ermittelt ... ein paar funktionen hinter die nicht per SQL realiesiert sind". Du müsstest also schon genauer sagen wo die Daten her kommen, die in deinem Grid dargestellt werden.
Es reicht nicht einfach eine "blanke" DataTable als Datenquelle anzugeben. Dein Grid "weiß" in diesem Fall ja nicht, was es machen soll! Deshalb ist deine Vermutung richtig, dass die DataTable nur verwendet wird, wenn sie vorher mit Spalten ausgestattet war. Nur dann kann das Grid die DataTable bedienen (s. hier):
Wenn du deine DataTable wieder aus der DataSource "heraus holen" möchtest, musst du sie erst umwandeln (einfach table = ...DataSource klappt nicht). Zum Cast siehe z. B. hier:
Ich bin kein VBler, wenn der Code also nicht wirklich korrekt ist wundere dich nicht, pass ihn einfach an.
Soweit so gut.
Wenn deine Daten in dem Grid an eine Exportfunktion übergeben werden sollen: Was erwartet denn deine Exportfunktion? Die einfachste Variante wäre eventuell, die bereits angesprochene DataGridViewRowCollection zu übergeben und auszuwerten. Oder, wie du bereits meintest das komplette Grid.
Grüße
1. Ja, das ist C#. Die Übersetzung von C# nach VB und umgekehrt sollte aber nicht soo ein großen Problem darstellen.
2. Nein, meinen Post hast du nicht richtig interpretiert:
Deine Frage war ob es eine Möglichkeit gibt "aus einem DataGridView eine DataTable zu erstellen". Dies habe ich mit dem Post beantwortet. Die Lösung wäre eine neue DataTable zu erstellen und diese mit der entsprechenden Anzahl von Spalten (wie im DataGridView) auszustatten und danach zeilenweise die Zellen des DataGridView in die DataTable zu kopieren.
Was du nicht erwähnt hattest (und auch nach wie vor nicht wirklich schreibst), dass du offenbar eine Datenquelle benutzt; s. u. "weil einige spalten im Grid erst beim Füllen ermittelt ... ein paar funktionen hinter die nicht per SQL realiesiert sind". Du müsstest also schon genauer sagen wo die Daten her kommen, die in deinem Grid dargestellt werden.
Es reicht nicht einfach eine "blanke" DataTable als Datenquelle anzugeben. Dein Grid "weiß" in diesem Fall ja nicht, was es machen soll! Deshalb ist deine Vermutung richtig, dass die DataTable nur verwendet wird, wenn sie vorher mit Spalten ausgestattet war. Nur dann kann das Grid die DataTable bedienen (s. hier):
Dim table As DataTable = new DataTable("SomeData")
Dim column As DataColumn
Dim row As DataRow
column = New DataColumn()
column.DataType = System.Type.GetType("System.String")
column.ColumnName = "Name"
table.Columns.Add(column)
dataGridView.DataSource = table
Wenn du deine DataTable wieder aus der DataSource "heraus holen" möchtest, musst du sie erst umwandeln (einfach table = ...DataSource klappt nicht). Zum Cast siehe z. B. hier:
Dim table as DataTable = DirectCast(dataGridView.DataSource, DataTable)
Ich bin kein VBler, wenn der Code also nicht wirklich korrekt ist wundere dich nicht, pass ihn einfach an.
Soweit so gut.
Wenn deine Daten in dem Grid an eine Exportfunktion übergeben werden sollen: Was erwartet denn deine Exportfunktion? Die einfachste Variante wäre eventuell, die bereits angesprochene DataGridViewRowCollection zu übergeben und auszuwerten. Oder, wie du bereits meintest das komplette Grid.
Grüße