none
unterschiedliche Controls in einer DataGridView - Spalte RRS feed

  • 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
    Montag, 6. Dezember 2010 21:47

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
    Donnerstag, 9. Dezember 2010 17:46

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
    Dienstag, 7. Dezember 2010 05:34
  • 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)

    Dienstag, 7. Dezember 2010 07:33
  • 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
    Dienstag, 7. Dezember 2010 22:03
  • 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
    Donnerstag, 9. Dezember 2010 17:46