none
Checkbox im Datagridview funktioniert nicht wie gewünscht RRS feed

  • Frage

  • Hallo Experten,

    ich habe wieder einmal ein Problem.

    Ich habe ein Datagridview, welches mit Daten aus einem SQL View befüllt wird. Das

    Außerdem füge ich eine ungebundene Checkbox Spalte mit dem Namen 'Anwesend' hinzu um einelne Datensätze zu markieren, bzw. ggf. per Programm die Checkbox zu setzen wenn ein Kind zu einem Termin anwesend war.

    1. Setzen Defaultwerte desDGV und Hinzufügen der 'Anwesend' Spalte

                // Setze Eigenschaften DGV Kinder Obsorgestatus und füge Spalte für Anwesend hinzu
                vwKlientKinderObsorgeDataGridView.BackgroundColor = SystemColors.ButtonFace;
                vwKlientKinderObsorgeDataGridView.RowHeadersVisible = false;
                vwKlientKinderObsorgeDataGridView.AllowUserToAddRows = false;
                vwKlientKinderObsorgeDataGridView.AllowUserToDeleteRows = false;
                vwKlientKinderObsorgeDataGridView.MultiSelect = false;
                vwKlientKinderObsorgeDataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
                vwKlientKinderObsorgeDataGridView.ReadOnly = false;
                DataGridViewCheckBoxColumn dgvc = new DataGridViewCheckBoxColumn();
                dgvc.Name = "Anwesend";
                dgvc.ReadOnly = false;
                dgvc.HeaderText = "Anw.";
                dgvc.Width = 50;
                dgvc.TrueValue = true;
                dgvc.FalseValue = false;
                vwKlientKinderObsorgeDataGridView.Columns.Insert(0, dgvc);

                for (int i = 0; i < vwKlientKinderObsorgeDataGridView.Columns.Count; i++)
                {
                    if (vwKlientKinderObsorgeDataGridView.Columns[i].Name != "Anwesend")
                    {
                        vwKlientKinderObsorgeDataGridView.Columns[i].ReadOnly = true;
                    }
                }

    Hier soll die Checkbox Spalte aus dem Datenbestand aktualisiert werden.

                    var anwkinder = context.BuchungAnwKinds
                        .Where(b => b.BuchungID == bucID)
                        .Select(b => new { b.AnwKindID, b.Anwesend }).ToList();
                    foreach (var ak in anwkinder)
                    {

                        for (int i = 0; i < vwKlientKinderObsorgeDataGridView.Rows.Count; i++)
                        {
                            DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)vwKlientKinderObsorgeDataGridView["Anwesend", i];
                            if (Convert.ToInt32(vwKlientKinderObsorgeDataGridView[kindIDCol, i].Value.ToString()) == ak.AnwKindID)
                            {
                                chk.Value = chk.TrueValue;
                                vwKlientKinderObsorgeDataGridView.EndEdit();
                            }
                            else
                            {
                                chk.Value = chk.FalseValue;
                                vwKlientKinderObsorgeDataGridView.EndEdit();
                            }
                        }
                    }

    Obwohl der Code korrektur durchlaufen wird, wird nie eine Checkbox als Anwesend markiert, egal ob ich true direkt zuweise oder ob ich es mit Truevalue mache. Ich hoffe, irgend jemand findet den Fehler.

    Gruß

    Siegfried

    Sonntag, 20. Oktober 2013 22:53

Antworten

  • Hallo,

    ich habe beim Googlen einen Beitrag gefunden, dass man in einem Datagridview entweder nur gebundene oder nur ungebundene Spalten haben darf, nicht gemischt.

    Ich habe mein Datagridview durch ein Listview ersetzt, damit funktioniert es.

    Grüße

    Siegfried

    Sonntag, 27. Oktober 2013 19:04

Alle Antworten