Benutzer mit den meisten Antworten
unterschiedliche Controls in einer DataGridView - Spalte

Frage
-
Hallo Leute,
ich habe in meiner DGV eine Column, in der ich wahlweise als EditingControl eine ComboBox oder eine normale TextBox verwenden möchte.
Welches der beiden Controls ich verwenden muss, hängt von einer Bedingung ab.
So kann es zB. sein, dass beim Anklicken einer Zelle die ComboBox erscheinen soll und in einer anderen Zelle derselben Column beispielsweise die normale TextBox.
Sozusagen habe ich innerhalb einer Column eine DataGridViewComboBoxColumn und eine DataGridViewTextBoxColumn gemischt, was ja so nicht geht aber ihr wisst bestimmt was ich meine.
Wie würdet ihr das von der Vorgehensweise her lösen?
Vielen Dank im Voraus
Christian Tauschek
Christian Tauschek
Antworten
-
Hallo Peter,
ich habe es jetzt geschafft, eine DataGridView-Spalte zu entwerfen, die 2 unterschiedliche EditingControls (ComboBox und TextBox) verwaltet.
Die Datentypen sind bei beiden Controls gleich. (String)
Somit ist es möglich, dass in einer Spalte mal eine Textbox und mal eine ComboBox zur Eingabe verwendet werden kann.
Es waren zwar einige Eingriffe in der Cell- und der ColumnKlasse erforderlich aber nun funktioniert es so wie ich es mir vorgestellt hatte.
mfg
Christian Tauschek
Christian Tauschek- Als Antwort markiert Elmar BoyeEditor Donnerstag, 9. Dezember 2010 19:33
Alle Antworten
-
Hi Christian,für die eigene Gestaltung einer Spalte im DataGridView musst Du eine Klasse von DataGridViewColumn erben lassen und ein passendes CellTemplate erstellen. Das ist recht mühsam und, ob Du damit die gewünschten Ziele erreichen wirst, kann ich nicht sagen. Einfaches ist es, gleich auf WPF umzusteigen und dort einen getriggerten Styles für ein Template zu nutzen. Damit ist Dein Ansinnen recht leicht realisierbar.--
Viele Grü�?e
Peter -
Hallo Christian,
ich habe in meiner DGV eine Column, in der ich wahlweise als
EditingControl eine ComboBox oder eine normale TextBox
verwenden möchte.
Welches der beiden Controls ich verwenden muss, hängt von
einer Bedingung ab.
So kann es zB. sein, dass beim Anklicken einer Zelle die
ComboBox erscheinen soll und in einer anderen Zelle derselben
Column beispielsweise die normale TextBox.
Sozusagen habe ich innerhalb einer Column eine
DataGridViewComboBoxColumn und eine
DataGridViewTextBoxColumn gemischt, was ja so
nicht geht aber ihr wisst bestimmt was ich meine.Eine DataGridViewComboBoxColumn kann in jeder
Zeile immer nur den selben Typ eines EditingControls
bereitstellen. Verschiedene Controls je Zeile sind
deshalb nicht möglich.
Darüber hinaus erfolgt die Datenbindung ebenfalls
an die jeweilige Spalte (also an die jeweilige
DataGridViewColumn), weshalb auch das Bereitstellen
unterschiedlicher Datenarten für die verschiedenen
Zeilen einer Spalte ein Problem wäre.Wie würdet ihr das von der Vorgehensweise her lösen?
Schwer zu sagen, wenn man die eigentliche Aufgabenstellung
nicht kennt. Vielleicht beschreibst Du einfach mal etwas
ausführlicher, was genau Du machen möchtest, wie
Deine im DGV anzuzeigenden Daten aussehen und wie
sie organisiert sind.Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen) -
Hallo Peter,
da muss ich jetzt mal dumm fragen. Ich benutze VS2008. Geht da WPF überhaupt oder ist das erst mit VS2010 möglich?
Die Template-Geschichte muss ich mir erst mal genauer ansehen.
Eine Möglichkeit (aber sehr unschön) ist mir noch eingefallen.
Ich könnte doch - wenn eine TextBox-Zelle angeklickt wird - eine Bedingung prüfen, deren Ausgang dann entscheidet, ob es bei der TextBox-Zelle bleiben soll oder ob eine ComboBox genau über der angeklickten Zelle dargestellt werden soll und der User dort seine Auswahl treffen könnte und sich die ComboBox danach wieder schließt und das ausgewählte Element (eine normaler Text) in der TextBox-Zelle angezeigt wird.mfg
Christian Tauschek
Christian Tauschek -
Hallo Peter,
ich habe es jetzt geschafft, eine DataGridView-Spalte zu entwerfen, die 2 unterschiedliche EditingControls (ComboBox und TextBox) verwaltet.
Die Datentypen sind bei beiden Controls gleich. (String)
Somit ist es möglich, dass in einer Spalte mal eine Textbox und mal eine ComboBox zur Eingabe verwendet werden kann.
Es waren zwar einige Eingriffe in der Cell- und der ColumnKlasse erforderlich aber nun funktioniert es so wie ich es mir vorgestellt hatte.
mfg
Christian Tauschek
Christian Tauschek- Als Antwort markiert Elmar BoyeEditor Donnerstag, 9. Dezember 2010 19:33