Entwickler-Ecke
WinForms - DataGridVIew Combobox
KostaK - Mi 21.05.08 13:24
Titel: DataGridVIew Combobox
Hallo Leute,
hab mal wieder ne Frage.
Es geht um eine combobox in einer DataGridView, es gelingt mir einfach nicht der combobox zu sagen Sie soll zB. den zweiten eintrag zeigen. Also soll beim initialisieren die erste Zeile den zweiten, die dritte den fünften und so weiter....
Es gibt zB. "selectedIndex = 2;" oder so etwas nicht.
Danke im voraus.
mfg Kosta
JüTho - Mi 21.05.08 14:30
So kann es nicht gehen. Die DataGridViewComboBoxCoolumn enthält Festlegungen für die gesamte Spalte, aber nicht für eine einzelne Zelle. Die passende Lösung hängt davon ab, wie die Daten ausgewählt und festgelegt werden.
Ein gängiges Verfahren ist, dass die eigentlichen Daten aus einer DataTable kommen und die Nachschlagewerte aus einer damit verbundenen zweiten DataTable. Relevant sind in erster Linie
DataSource, DataPropertyName, DisplayMember, ValueMember; eine Anleitung ist unter
DataGridView: Master/Detail über ComboBox [
http://www.mycsharp.de/wbb2/thread.php?threadid=27014] zu finden.
Ansonsten kann man Dir nur mehr helfen, wenn Du mehr Informationen lieferst. Jürgen
KostaK - Mi 21.05.08 14:49
Hi JüTho,
ich will Daten aus einer Liste darstellen, da die ListView keine comboboxen unterstützt dachte ich, eine DataGridView geht auch.
Daten müssen ja nicht unbedingt von einer Datanbank kommen (oder doch?).
Combobox wird gefült. Und nun soll in den Comboboxen ein Item nach wahl angezeigt werden. (zB. das zweite in der ersten Zeile)
Es mußß doch irgendwie möglich sein zu sagen, "ComboBox zeige eintrag an index 4" .
Also bei initialisierung der ComboBox soll der zB. der eintrag der an zweiter Stelle ist angezeigt werden.
Gruß Kosta
JüTho - Mi 21.05.08 16:30
Dann untersuche einmal die
DataGridViewComboBoxColumn.Items-Eigenschaft und beachte vor allem die Hinweise und das Beispiel. Wenn die Einträge festgelegt wurden, könnte es etwa so gehen:
C#-Quelltext
1: 2: 3: 4: 5: 6:
| DataGridViewComboBoxCell.ObjectCollection items = (myDataGridView.Columns[columnIndex] as DataGridViewComboBoxColumn).Items; for(int x1 = 0; x1 < myDataGridView.Rows.Count; x1++) { myDataGridView.Cells[x1, columnIndex].Value = items[x1 % items.Count]; } |
Jürgen
KostaK - Sa 24.05.08 12:55
Hallo JüTho,
erstmal danke für die Antwort, hatte bis jetzt leider keine Zeit.
Versuchte es nachzuvollziehen und musste feststellen das „myDataGridView.Cells“ bei mir leider nicht existiert. Ich habe VS 2005 .
Gruß Kosta
JüTho - Sa 24.05.08 15:11
So kann es gehen: Was ich geschrieben habe, habe ich ohne genauere Prüfung notiert. Bei manchen Sachen müsste ich ebenfalls in der
SDK-Doku nachlesen. Das muss ich auch von Dir erwarten, gerade wenn Du bei meiner Hilfe einen Fehler feststellst.
Konkret: Die
Cells-Eigenschaft gehört nicht zum DataGridView, sondern zur
DataGridViewRow. Mein Code muss also so lauten:
C#-Quelltext
1: 2: 3: 4: 5: 6:
| DataGridViewComboBoxCell.ObjectCollection items = (myDataGridView.Columns[columnIndex] as DataGridViewComboBoxColumn).Items; for(int x1 = 0; x1 < myDataGridView.Rows.Count; x1++) { myDataGridView.Rows[x1].Cells[columnIndex].Value = items[x1 % items.Count]; } |
Jürgen
KostaK - Sa 24.05.08 15:37
Hallo JüTho,
habe in keiner Weise behauptet dass du einen Fehler gemacht hast eher im Gegenteil, war froh dass du geantwortet hast.
In der Hilfe habe ich nachgeschaut aber nicht verstanden um was es geht. Deshalb die Bitte um Hilfe in diesem Forum.
Mit deinem Code habe ich verstanden um was es geht und für mich angepasst. Also es geht super.
Vielen Dank und freundliche Grüße Kosta
JüTho - Sa 24.05.08 17:02
KostaK hat folgendes geschrieben: |
| und musste feststellen das „myDataGridView.Cells“ bei mir leider nicht existiert. |
Das bedeutet doch: Du hast einen Fehler festgestellt (denn was ich geschrieben hatte, war ja wirklich falsch). Wichtig ist, dass die richtige Lösung gefunden wird. Jürgen
KostaK - So 25.05.08 12:48
Hi Jürgen,
hab noch ein Problemchen.
Und zwar in einer DataGridView habe ich zwei Spalten die erste ein DataGridViewTextBoxColumn in der zweiten ein DataGridViewComboBoxColumn. Es soll so sein das keine eingabe möglich ist, also EditMode = EditProgrammatically (so habe ich es verstanden).
Sobald ich es aber so einstelle kann ich zwar in der ersten nichts mehr eingeben, die ComboBox läßt sich dann aber nicht mehr ausklappen.
Ich will also nur die erste Spalte sperren(so daß keine Eingaben möglich sind).
Gruß Kosta
KostaK - So 25.05.08 13:08
Stop ich habs, ReadOnly auf true in der Spalte.
mfg Kosta
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!