Entwickler-Ecke
WinForms - Combobox in Datagridview
mr-dayton - Mi 11.08.10 15:31
Titel: Combobox in Datagridview
Hallo liebes c# Forum
Ich versuche momentan folgende Problemstellung zu lösen:
Aus einer CSV-Datei erstelle ich ein Dataset. Dieses wird in einem Datagridview ausgegeben. Dies funktioniert tadellos. Sobald ich aber versuche, die erste Reihe mit Comboboxes zu füllen komme ich an meine Grenzen. Ich möchte, dass zu beginn jeder Spalte eine Combobox erscheint, mit immer derselben Auswahl (z.B. Name, Vorname usw.).
Meine kläglichen Versuche erspare ich euch, da sie immer mit einem Fehler enden.
Hat jemand von euch einen Vorschlag?
Vielen Dank!!
bakachan - Mi 11.08.10 15:45
Was für Fehler kommen denn?
Das Datagridview dürfte sich ja die Daten aus dem Datset selbst holen wenn du noch zusätzliche Reihen oder Spalten haben willst kannst du die doch einfach einfügen.
(DataGridViewRow erstellen, Zellen hinzufügen, Zeile in GridView einfügen aber bitte drauf achten das überhaupt Spalten da sind)
mr-dayton - Mi 11.08.10 15:59
Viele Dank für die rasche Antwort
Also ich versuche folgendes:
DataTable dt = reader.GetDataTable(';'); //Datatable holen mit Seperator als Parameter
DataGridViewComboBoxCell cell = new DataGridViewComboBoxCell();
cell.Items.Add("Name");
cell.Items.Add("Vorname");
dataGridView1.DataSource = dt;
DataGridViewRow row = new DataGridViewRow();
row.Cells.Add(cell);
dataGridView1.Rows.Add(row);
Danach bekomme ich folgenden Fehler:
"Invalid Operation Exception"
Zeilen können nicht automatisch zur Zeilenauflistung der DataGridView hinzugefügt werden, wenn das Steuerelement datengebunden ist.
bakachan - Mi 11.08.10 16:08
Da stehts doch.
DataGridView ist datengebunden also musst dus der Datenquelle (in dem Fall der DataTable) hinzufügen.
mr-dayton - Mi 11.08.10 16:33
Logisch :-)
Also es hat so mehr oder weniger geklappt:
dt = datatable
object[] boxes = new object[dt.Columns.Count];
for (int i = 0; i < dt.Columns.Count;i++ )
{
ComboBox box = new ComboBox();
box.Items.Add("Test");
boxes[i] = box;
}
//row abfüllen
dt.Rows.Add(boxes);
Nun stehen anstatt Textboxes in meinem Datagridview : System.Windows.Forms.ComboBox, Items.Count: 1
Was habe ich da nun wieder verbockt?
Danke!
Kha - Mi 11.08.10 19:22
Da warst du mit der ComboBoxCell schon näher dran. Aber da du die ComboBox ja wahrscheinlich in jeder Zeile haben willst, solltest du dir eher DataGridViewComboBoxColumn anschauen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!