| Autor |
Beitrag |
KostaK
      
Beiträge: 34
|
Verfasst: Mi 21.05.08 13:24
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
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: 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 zu finden.
Ansonsten kann man Dir nur mehr helfen, wenn Du mehr Informationen lieferst. Jürgen
|
|
KostaK 
      
Beiträge: 34
|
Verfasst: 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
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: 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 
      
Beiträge: 34
|
Verfasst: 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
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: 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 
      
Beiträge: 34
|
Verfasst: 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
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: 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 
      
Beiträge: 34
|
Verfasst: 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 
      
Beiträge: 34
|
Verfasst: So 25.05.08 13:08
Stop ich habs, ReadOnly auf true in der Spalte.
mfg Kosta
|
|