2015-06-01 1 views
1

У меня есть DataGridView, заполненный из файла excel. Я добавил столбец флажок в этом DataGridViewПоследняя проверенная строка в datagridview checkbox column не отмечена

... 
dtSet.Tables[0].Columns.Add(new DataColumn("boolCol", typeof(bool))); 
dgvInputFile.DataSource = dtSet.Tables[0]; 
dgvInputFile.AllowUserToAddRows = false; 

Позже я проверяю, если каждая строка cheked:

for (int currentRow = 0; currentRow < grv.Rows.Count; currentRow++) 
    { 
    DataGridViewCheckBoxCell CbxCell = dgvInputFile.Rows[currentRow].Cells["boolCol"] as DataGridViewCheckBoxCell; 
    bool valid = CbxCell != null && !DBNull.Value.Equals(CbxCell.Value) && (bool)CbxCell.Value == true; 
    .... 

Если я проверить первую строку. Затем valid=false для любой строки. Если я проверю первые 2 строки. Затем valid=true только для первой строки. Если я проверю первые 3 строки. Затем valid=true только для первых двух строк. Кажется, что последняя строка всегда не отмечена. Но это щекочет. И это не только когда я проверяю с самого начала.

Я пробовал второй метод для определения, есть ли строка, и результат такой же.

(bool)dgvInputFile.Rows[currentRow].Cells["boolCol"].FormattedValue 

Кроме того. Если я проверю первый, затем второй, а третий и отменит третий.

+0

делает 'currentRow' фактически указывает на 3-й строке (или) строки вы собираетесь проверить? – Rahul

+0

Да. Я проверил это. Неверное значение ячейки флажка. – cattaneo

ответ

1

ОК, я нашел причину такого поведения. Последний установленный флажок по-прежнему находится в режиме редактирования, когда я получаю его значение с (bool)dgvInputFile.Rows[currentRow].Cells["boolCol"].FormattedValue

Insted i должен использовать DataGridViewCell.EditedFormattedValue.

MSDN

Gets the current, formatted value of the cell, 
regardless of whether the cell is in edit mode 
and the value has not been committed.