DataGridView mit DataTable / Combobox mit Checkboxen?

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    DataGridView mit DataTable / Combobox mit Checkboxen?

    Soo,

    ich weiß mal wieder nicht weiter!

    Ich habe ein an ein DataTable gebundenes DataGridView.
    Nun benötige ich in einer Spalte eine Zelle die mir ein Combobox darstellt..diese Combobox wiederum sollte mir mehrere Checkboxen anzeigen!

    Ist sowas möglich?

    Wenn nein, wie könnte ich eine Auswahl von mehreren Vorgaben in einer DGV anzeigen lassen?
    Also praktisch soll es so aussehen:

    Die Spalte heißt "Erledigt" und jede einzelne Abteilung (vllt. vier) soll die Combobox für deren Abteilung anhaken können, sodass wenn alle Haken gesetzt wurden die betreffende Zeile ausgeblendet wird.
    Naja, mit Datenbindung wird's für den Bereich wohl nix. Aber da im Forum schon ein DTP und auch ein NUD Platz im DGV gefunden hat, könnte ne CheckedListBox es ggf. auch schaffen. Denn eine ComboBox mit checkable Items kenn ich nicht.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Wenn du eine Spalte haben möchtest, wo in der Zelle ein Combobox mit Checkboxen hinterlegt ist, dann was soll passieren, wenn der User in einer dieser Zellen mehrere Checkboxen anhakt? Klar, theoretisch (und auch praktisch) könnte man in einer Zelle (und somit in einer Datenfeld) mehrere Werte speichern (z. B. durch ein Trennzeichen), aber viel Sinn macht das nicht und erschwert nur die weitere Arbeit damit.

    Ausserdem ist die Problemstellung für mich nicht so klar. Wären jetzt die Abteilungen die Zeilen oder der Combobox soll die Abteilungen enthalten? Und in dieser einen Spalte soll nur eine Zelle einen Combobox haben? Du schreibst, die Spalte soll Erledigt heissen. Ich würde mir das so vorstellen, dass es x beliebige Abteilungen gibt (die Zeilen untereinander in der dgv) und eine Spalte mit einem Checkboxcolumn und der User kann anhaken, wenn eine Abteilung seine Aufgabe o. sonstwas erledigt hat.
    Also die Tabelle soll von mehreren Abteilungen bearbeitet werden können, diese haben auch nur auf die für sie freigegebenen Spalten Schreibzugriff.

    Nun soll jede Abteilung nach getaner Arbeit, also wenn fertig, ein Haken für die jeweilige Abteilung in der "Erledigt"-Spalte setzen können..die anderen Checkboxen dienen dann nur zur Einsicht.
    Und wenn halt jede Abteilung ihren Haken gesetzt hat wird die Reihe ausgeblendet.

    Das mit dem "CheckedListBox " find ich sehr interessant und sieht auch vielversprechend aus..muss nur leider Tagsüber arbeiten, hab mir des deswegen noch nicht wirklich näher angeguckt!
    Um wieviele Abteilungen geht es? Wenn es nur 5 oder so sind, kann man das ja mit einer entsprechenden Zahl von CheckBox-Spalten sehr einfach lösen.

    ##########

    Oder man macht nur eine mit TriState + ButtonColumn. Klick auf den Button erscheint die CheckBoxList. Und dann können die Abteilungen klicken. Der Absolutzustand ist ausgeblendet in der Row gespeichert.
    Abhängig vom Zustand zeigt die CheckBox-Column:
    • [ ] nix, keine Abteilung hat geklickt
    • [#] (Tristate), einige haben geklickt
    • [v] (Haken), alle haben geklickt
    hab nochmal nachgelegt, @Morrison

    (verfl… Sch…, die Anredefunktion will nicht :cursing: )
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VaporiZed“ ()

    jo, so würde ich das auch sehen. Also Datenmodellmässig. Es muss eine mittler-Tabelle Erledigt geben zwischen Abteilung und Aufgabe.
    Wenn einer Aufgabe dann genau so viele Erledigt-Datensätze zugeordnet sind, wie es Abteilungen gibt, dann ist sie komplett erledigt.

    Jo, so das Datenmodell. Das Gui dazu ist aber dennoch eine Herausforderung...
    @VaporiZed Ähm, ja..Button gut..TriState....und dann alles zusammen?!

    Hatte es erst so versucht:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim _chkBox As New CheckBox With {.Name = "Test", .Text = "Test", .AutoSize = True, .Size = New System.Drawing.Size(80, 17), .UseVisualStyleBackColor = True, .CheckState = CheckState.Unchecked}
    2. Dim dgvcbc As New DataGridViewComboBoxColumn With {.Name = "Erledigt", .HeaderText = "Erledigt"}
    3. dgvcbc.Items.Add(_chkBox)
    4. dgvcbc.Items.Add(_chkBox)
    5. dgvMainTable.Columns.Add(dgvcbc)


    Da war nix zu sehen..dann hatte ich versucht nen eigenes DGV-Cell-Control zu erstellen..mit Combobox-Column und Checkboxen als Auswahl..das hat auch nich geklappt..konnte da keine Items hinzufügen, geschweige denn die Cell-Column ins DGV einfügen..
    Nee, ich hatte im DGV nur ne CheckBoxColumn im Sinn. In ner 2. Spalte ne ButtonColumn. Wenn man auf den Button draufklickt, kommt ein ExtraControl (CheckedListBox, außerhalb des DGVs). Deren Auswahl ergibt den Zustand in der DGV-CheckBox.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.