Laden...

DataTable aus DataGridView

Erstellt von HeinzTomato vor 15 Jahren Letzter Beitrag vor 15 Jahren 842 Views
HeinzTomato Themenstarter:in
345 Beiträge seit 2005
vor 15 Jahren
DataTable aus DataGridView

Hallo.

Ich habe folgendes Problem:

Ein (nicht gebundenes) DataGridView mit mehreren Spalten und Zeilen soll in eine DataTable übergeben werden. Wie kann ich das am besten bewerkstelligen?

Es interessiert mich dabei lediglich die Struktur, nicht der Inhalt.

GIbte es eine Möglichkeit die DataGridViewColumns in eine DataColumn zu casten oder gibt es gar die eine tolle große makeDataTableFromView-Methode? 🙂

Danke im voraus

Mein Haus, mein Viertel, mein Blog

915 Beiträge seit 2006
vor 15 Jahren

Du kannst das übers Schema lösen.

Hier nen Beispiel für ne OleDB weis ja nicht was verwendest 🙂


			using (OleDbConnection oleDbConnection = new OleDbConnection(this.Connection))
			{

				oleDbConnection.Open();

				DataTable dtTables = oleDbConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, "Kunde", null });
			}

Wenn in google suchst findest noch andere Schematas die du evtl brauchen könntest, aber denke vorweg interessierne dich die Columns.

Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(

HeinzTomato Themenstarter:in
345 Beiträge seit 2005
vor 15 Jahren

Da hast Du mich glaube ich missverstanden:

Die View ist an keine DB gebunden. Es gibt also keine DataSource o.ä. sondern nur das GUI-Element.

Ich habe mir zunächst so beholfen:

 
// dgvprotokoll= DataGridView
DataTable dtProt=new DataTable();

 for (int i = 0; i < dgvProtokoll.Columns.Count; i++)
            {
                dtProt.Columns.Add(dgvProtokoll.Columns[i].Name);
            }

Aber irgendwie finde ich das "unschön"

Mein Haus, mein Viertel, mein Blog

J
3.331 Beiträge seit 2006
vor 15 Jahren

Hallo Heinz,

für die Datenübergabe muss ja wohl jede Zeile als Einheit angesehen werden. Prüfe einmal, ob dir DataGridViewRow.Cells.CopyTo als Quelle und DataRow.ItemArray als Ziel hilft.
Sorry, falsche Antwort: Dich interessiert ja die Struktur, nicht der Inhalt.

Bessere Antwort: Das kann doch nicht gehen, weil für DataColumn auch Spaltentyp und ggf. die maximale Länge wichtig sind. So etwas gibt es aber bei DataGridViewColumn überhaupt nicht. Wie willst Du das allgemein steuern?

Jürgen

915 Beiträge seit 2006
vor 15 Jahren

Hrm, das (nicht gebundenes) hatte ich überlesen. Na ja, das was bereits verwendest wäre die einfachste Lösung, spricht auch nichts dagegen.

Du kannst auch DataTable.WriteXML benutzen um das Schema auszulesen und DataTable.ReadXML um nur das Schema wieder einzulesen, wäre etwas schöner.

Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(