как проверить, флажок установлен или нет в C # winform

1
 DataGridViewCheckBoxColumn GvCheckBox = new DataGridViewCheckBoxColumn();
        doWork.HeaderText = "Approved Cheque";
        doWork.FalseValue = "0";
        doWork.TrueValue = "1";
GvViewPendingCheque.Columns.Insert(0, doWork);
        GvViewPendingCheque.DataSource = objDataSet.Tables[0];

его рабочий тонкий столбец флажка добавлен в сетку с данными db, я хочу обновить данные всех строк, где установлен флажок

Столбец MyTable: платежные данные MyStable PaymentStatus: ожидается

при проверке администратора, checkbox PaymentStatus будет обновляться с помощью одобренного istead of Pending, пожалуйста, помогите мне, я попробовал этот код, но его не работает:

  foreach (DataGridViewRow row in GvViewPendingCheque.Rows)
                    {

                        if ((bool)row.Cells[doWork.Name].Value == true)
                        {
                            MessageBox.Show("True");
                        }
                        else
                        {
                            MessageBox.Show("Failed...");
                        }
                    }

а также

if ((bool)this.GvViewPendingCheque.Rows[0].Cells[0].Value == true)
            {
                MessageBox.Show("True");
            }
            else
            {
                MessageBox.Show("False");
            }

просто хочу знать, как получить checkbox 'check' rows

  • 0
    Как это не работает?
  • 0
    Вы уверены, что GvViewPendingCheque.Rows[0].Cells[0].Value правильное? Вы просто проверяете первый ряд?
Показать ещё 1 комментарий
Теги:
winforms
checkbox

3 ответа

0
Лучший ответ

вы можете использовать:

 if (Convert.ToBoolean(this.GvViewPendingCheque.Rows[0].Cells[0].Value) == true)
        ...

но я уверен, что если это правильный способ доступа к ячейке в виде сетки данных. более простой способ доступа к ячейке [row, column]:

if (Convert.ToBoolean(this.GvViewPendingCheque[0,0].Value) == true)
  • 0
    Ошибка: строка не была распознана как допустимое логическое значение
  • 0
    Я думаю, что определение истинного и ложного значений неверно, это должны быть логические, 0 или 1, вместо "0" и "1"
Показать ещё 8 комментариев
1

Вы устанавливаете ложные и истинные значения соответственно "0" и "1". Но преобразование строк в boolean, как вы пытаетесь сделать в цикле foreach, FormatException.

С другой стороны, преобразование чисел 0 и 1 в boolean возвращает false и true.

DataGridViewCheckBoxColumn GvCheckBox = new DataGridViewCheckBoxColumn();

GvCheckBox.FalseValue = 0;  // replaced "0"
GvCheckBox.TrueValue = 1;   // replaced "1"
  • 0
    Спасибо, сейчас работает
0

Если вы поместите свою ячейку в DataGridViewCheckBoxCell, вы сможете использовать свойство checked, чтобы проверить,

cell1.checked == true

Ещё вопросы

Сообщество Overcoder
Наверх
Меню