2016-11-15 4 views
1

ich eine Datagridview laden und ich versuche, einen schnellen Weg der Schleife durch eine bestimmte Spalte zu finden, die Spaltennamen gegeben ....Looping durch eine bestimmte Datenmenge Spalte zu überprüfen, ob es einen bestimmten Wert enthält

Dies ist, wie meine Datagridview geladen ....

ad = New SqlDataAdapter(sql, con) 
ad.Fill(ds, "Fields") 
dgvFields.DataSource = ds.Tables("Fields") 

dgvFields.ReadOnly = True 
dgvFields.RowHeadersVisible = False 

dgvFields.Columns(0).Width = 156 
dgvFields.Columns(1).Width = 156 
dgvFields.Columns(2).Width = 156 
dgvFields.Columns(3).Width = 157 

‚Jetzt möchte ich Schleife in der Lage sein, durch dgvfields.columns (3) oder Spaltenname‚Field1a‘und prüfen, ob dgvfields.rows =‚ValueA‘

etwas entlang der Linien ...

For Each row As DataRow In dgvFields.Columns(5) 
     if dgvfields.rows.value="ValueA" then 
      'do something 
     End if 

    Next 
+1

Scannen Sie die Datentabelle nicht die Kontrolle - das Snippet ist Mischen und Abgleichen DT und DGV-Elemente. siehe [Get DataGridView-Zellenwert] (http://stackoverflow.com/questions/40552536/get-datagridview-cell-value-in-nested-for-loops/40556752#40556752) für eine vb, loop-Version – Plutonix

Antwort

1

Das Problem ist die Art Sie für Ihre Zeile suchen ... DataRow für eine DataTable ist nicht ein DataGridViewRow ... Ich würde empfehlen, den Index ...

Hinweis: Dies kann in vielerlei Hinsicht erfolgen.

For i As Integer = 0 To dgvFields.Rows.Count - 1 
     If dgvfields.Rows(i).Cells("THE COLUMN NAME").Value="ValueA" Then 
      'do something 
     End if  
Next 
+0

@ danke , jetzt Wenn ich die Farbe einer bestimmten Zeile ändern wollte, wo der Wert ist, nach dem ich suche? dgvfields.rows (i) .defaultcellstyle.backColor = color.blue scheint nicht zu funktionieren:/ – BobSki

+1

Es funktioniert, tun Sie dies auf dem Load-Ereignis, wenn es so nicht funktioniert. 'dgvfields.Rows (i) .DefaultCellStyle.BackColor = YOURCOLOR' wird funktionieren, kann aber nicht auf der Ladeoperation ausgeführt werden, da es die Zelle daran hindert, geändert zu werden. Schauen Sie in [** RowPostPaint **] (https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.rowpostpaint (v = vs.110) .aspx) welche Sie dort ändern können die Farbe, wenn Sie möchten, tritt auf, nachdem die DataGridView-Nachrichten gepumpt werden. – Codexer

+0

Nun, ich rufe eine Funktion von LOAD, um das Raster zu bevölkern – BobSki

Verwandte Themen