2014-11-04 6 views
0

Я возвращаю результаты SQL в DataGridView и столкнулся с проблемой. У меня есть опция в моей форме, чтобы показывать только проверенные значения, но не могу заставить ее работать. Вот мой код:Показывать только отмеченные флажки в DataGridView

For x As Integer = dgvAutogrow.Rows.Count - 1 To dgvAutogrow.Rows.Count 
     If dgvAutogrow.Rows(x).Cells("checked").Value = False Then 
      dgvAutogrow.Rows.Remove(dgvAutogrow.Rows(x)) 
     End If 
    Next 

Вот какая часть моего DataGridView выглядит. Я хочу, чтобы произошло событие, которое показывает только те значения, которые отмечены флажком.

.netError

Когда я отладки я получаю следующее сообщение об ошибке:

.netError

Любые предложения о том, что нужно изменить?

ответ

2

Вы должны бросить в клетку, как DataGridViewCheckBoxCell и затем проверить значение, как это:

For x As Integer = dgvAutogrow.Rows.Count - 1 To 0 Step -1  
    Dim cel as DataGridViewCheckBoxCell 
    cel = CType(dgvAutogrow.Rows(x).Cells("YourColumnName"), DataGridViewCheckBoxCell) 
    If cel.Value = False Then 
     dgvAutogrow.Rows.Remove(dgvAutogrow.Rows(x)) 
    End If 
Next 

Кроме того, вы имели ArgumentException, потому что указанный вами столбец не существует, вам нужно его изменить.

+0

Почему downvote? Это решение подходит к вопросу. Поскольку я не могу добавить комментарий к другим ответам, пожалуйста, измените '.Cells (« checked »)' to '.Cells (« IsPercentGrowth ») или произойдет исключение. –

+0

Откуда у вас х? Также перед тем, как вы его отредактировали, это не сработало. Также почему ему нужно изменить имя ячейки, это должен быть тот, который он использует ... Зачем ему нужно менять его на IsPercentGrowth? – Codexer

+0

Не только была проблема, была проблема с удалением строки, потому что его цикл был неправильным, вы не решили эту проблему ... Так что ваш ответ не подходит для вопросов ... – Codexer

0

Код проверено и проверено.

Вы можете попробовать это. Нам нужно, чтобы бросить в клетку как DataGridViewCheckBoxCell и изменить цикл ...

For x As Integer = dgvAutogrow.Rows.Count - 1 To 0 Step -1 
     If CType(dgvAutogrow.Rows(x).Cells("checked"), DataGridViewCheckBoxCell).Value = False Then 
      dgvAutogrow.Rows.Remove(dgvAutogrow.Rows(x)) 
     End If 
    Next