Gregory Gadow
Извините за другой ответ, который я дал: в последнее время я был так сосредоточен на веб-программировании, что создал решение для неправильного управления.
У меня было очень мало причин использовать привязанные к базе данных сетки в WinForms, но я верю, что это сделает то, что вы хотите:
Private Sub TestGridView_DataBindingComplete(ByVal sender As Object, _
ByVal e As DataGridViewBindingCompleteEventArgs) _
Handles DataGridView1.DataBindingComplete
For Each Row As DataGridViewRow In CType(sender, DataGridView).Rows
Dim Visible As Boolean = True
'Do this to inspect all cells in the row
For i As Integer = 0 To Row.Cells.Count - 1
If Row.Cells(i).Value Is Nothing Then
Visible = False
Exit For
End If
Next
'Or you can check specific columns for their values
If Row.Cells(0).Value Is Nothing OrElse _
(IsNumeric(Row.Cells(0).Value) AndAlso CInt(Row.Cells(0).Value) < 0) Then
Visible = False
End If
Row.Visible = Visible
Next
End Sub
То
DataBindingComplete
событие запускается после того, как все данные были привязаны. Пройдите ряд за рядом и определите, должна ли строка быть видимой или нет.
Первый раздел кода проверяет каждое значение ячейки в строке, чтобы определить, должна ли строка быть видимой.
Второй показывает, как проверить определенные столбцы на наличие определенных значений; в этом случае смотрите только на первый столбец и подавляйте строку, если она либо ничего, либо целое число с отрицательным значением. То
OrElse
и
AndAlso
столяры закорачивают процесс оценки: если значение
Nothing
тогда оператор истинен, и числовые тесты никогда не выполняются для ячейки; если значение не является числовым, то он не будет пытаться преобразовать его.
После установки (или нет) значения
Visible
, видимость строки устанавливается, и мы переходим к следующей строке, пока каждая строка не будет проверена. Это очень медленный способ сделать это, и будет заметное отставание, если у вас много строк, но я не вижу другого способа.
Дайте мне знать, если это сделает то, что вам нужно. Если это так, не забудьте принять решение :)