Je suis un utilisateur de vb.net 2008 et je développe actuellement un système pour notre département. J'ai besoin de votre aide pour compter les lignes qui ont des cellules vides dans datagridview. Le nombre de lignes doit être affiché dans une étiquette.
Voici mon code.
For i = 0 To dgvMonitoringBoard.Rows.Count - 1
If dgvMonitoringBoard.Rows(i).Cells(24).Value.ToString = " " Then
x += 1
End If
Next
lblForTransfer.Text = "Items for transfer to Purchasing:" & x
Une approche un peu différente de @equisde. J'utiliserais Linq
pour votre cas. Cela renverra le nombre de lignes contenant une chaîne DBNull.Value
ou une chaîne vide ...
Voici un one-liner ...
Dim count As Integer = DataGridView1.Rows.Cast(Of DataGridViewRow).Where(Function(r) r.Cells.Cast(Of DataGridViewCell).ToList.Any(Function(c) c.Value Is DBNull.Value OrElse String.IsNullOrEmpty(CStr(c.Value).Trim))).Count
Voici de haut en bas - Parfois, c'est plus facile à lire ...
Dim count As Integer = DataGridView1.Rows.Cast(Of DataGridViewRow) _
.Where(Function(r) r.Cells.Cast(Of DataGridViewCell).ToList _
.Any(Function(c) c.Value Is DBNull.Value _
OrElse String.IsNullOrEmpty(CStr(c.Value).Trim))).Count
Alors vous pouvez faire ...
lblForTransfer.Text = "Items for transfer to Purchasing: " & count.ToString
Remarque: essayez de ne pas utiliser +
pour la concaténation de chaînes, utilisez &
pour la concaténation de chaînes. Vous pouvez également le mettre dans une fonction et le transmettre de DataGridView
cette façon, vous pouvez le réutiliser partout où vous en avez besoin et renvoyer la valeur.
MISE À JOUR PAR DEMANDE
Voici une fonction partagée que j'ai écrite qui prend un DataGridView
objet et un index de colonne facultatif pour effectuer la recherche à votre place. Cette fonction peut être utilisée partout où vous voulez l' utiliser ... Note: Ceci exclut également les nouvelles lignes si vous avez Allow Adding Rows
à vrai , si ce n'est pas permis n'a pas d' importance.
Public Shared Function EmptyCount(ByVal dgrid As DataGridView, Optional ByVal intColumn As Integer = -1) As Integer
Dim count As Integer = 0
If dgrid IsNot Nothing AndAlso dgrid.Rows.Count > 0 Then
If intColumn >= 0 Then 'Specific Column...
If intColumn <= dgrid.Columns.Count Then
count = dgrid.Rows.Cast(Of DataGridViewRow).Where(Function(rs) Not rs.IsNewRow) _
.Select(Function(r) r.Cells(intColumn)).Where(Function(r) r.Value Is DBNull.Value _
OrElse String.IsNullOrEmpty(CStr(r.Value))).Count
End If
Else 'Any columns...
count = dgrid.Rows.Cast(Of DataGridViewRow).Where(Function(rs) Not rs.IsNewRow) _
.Where(Function(r) r.Cells.Cast(Of DataGridViewCell).ToList _
.Any(Function(c) c.Value Is DBNull.Value _
OrElse String.IsNullOrEmpty(CStr(c.Value).Trim))).Count
End If
End If
Return count
End Function
Exemple d'utilisation
'Include all columns...
lblForTransfer.Text = "Items for transfer to Purchasing: " & EmptyCount(YOURDATAGRIDVIEWNAME).ToString
'Specific column...
lblForTransfer.Text = "Items for transfer to Purchasing: " & EmptyCount(YOURDATAGRIDVIEWNAME, 24).ToString
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras