C# - DataGridView - checkox

0

Proszę o pomoc związaną z komponentem DataGridVeiw.
Otóż wyświetlam za pomocą DataSeta dane w DGV.
Wśród kolumn mam zdefiniowaną kolumnę typu checkbox. Domyślnie nie jest ona zapełniana.
Ma ona służyć tylko do zaznaczania poszczególnych rekordów w celu ich pobrania do kolejnych działań.
Niestety poniższe zapytanie nie przynosi efektów:

            foreach (DataGridViewRow row in fw.dataGridView.Rows)
            {
                if (row.Cells[0].Value != null && (int)row.Cells[1].Value == 1)
                {
                    //operacje pobrania rekordu
                }
            }

Cells[1] -> to kolumna z checkoxem.
Próbowałem również (ibool)row.Cells[1].Value == true, lecz też bez efektów...

0

A sprawdź co daje ci Checked.

0

Znaczy chcesz sprawdzić czy coś jest typu bool i ma wartość true, a rzutujesz ją na int i sprawdzasz czy wynosi 1?

0

Ale czy to nie bez sensu sprawdzać, czy pole jest jednocześnie niepuste i równe 1? Jeżeli jest równe 1, to znaczy, że nie jest puste. Ty masz tylko sprawdzić czy dany CheckBox jest zaznaczony.

0

No tak. Moje wysiłki skupiają się na tym tylko, aby stwierdzić czy w danym wierszu jest zaznaczony checkbox.
Nie ma niestety czegoś takiego jak row.Cells[1].Checked , które by rozwiązało sprawę, stad próbowałem rzutować do int poprzez (int)row.Cells[1].Value == 1 lub do bool (bool)row.Cells[1].Value == true.

P.S. Czy w ogóle po zakliknięciu checkboxa w DGV potrzebne jest jeszcze oprogramowanie zdarzenia związanego z zapisem przeprowadzonej zmiany na wierszu?

0

Ale tylko sprawdzasz czy wartość jest różna od null, ponieważ jeśli wartość będzie równa null to checkbox nie jest zaznaczony. Wystarczy sprawdzić tylko ten warunek. Nie wiem po co Ty chcesz tu coś rzutować.

0

JAKIM PRAWEM BOOL MIAŁBY SIĘ RZUTOWAĆ NA INT W C#? To nie jest C.

Natomiast rzutowanie na bool działać powinno. Jeśli nie działa, to znaczy, że coś innego masz źle.

0

Dziękuję za pomoc. Dodam, że zamieszanie jeszcze wprowadzało nie uwzględnianie wszystkich checków. Pomogło zastosowanie dataGridView.EndEdit();
Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1