2016-11-15 51 views
1

我加載一個DataGridView,我試圖找到通過某列循環的快捷方式,給定列名....通過特定的數據集列循環,以檢查其中是否包含一定值

這是怎麼了我的datagridview加載....

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 

「現在我希望能夠遍歷dgvfields.columns(3)或列名‘Field1a’,並檢查是否dgvfields.rows =‘值a’

沿線...

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

    Next 
+1

掃描數據表而不是控件 - 代碼段正在混合並匹配DT和DGV元素。請參閱[獲取DataGridView單元格值](http://stackoverflow.com/questions/40552536/get-datagridview-cell-value-in-nested-for-loops/40556752#40556752)瞭解vb,循環版本 – Plutonix

回答

1

的問題是,你正在看你的行類型... DataRow是一個DataTable一個DataGridViewRow ......我會建議使用索引...

注意:這可以通過很多方式完成。

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

@謝謝,現在如果我想改變某個特定行的顏色,而這個值是我正在尋找的值? dgvfields.rows(i).defaultcellstyle.backColor = color.blue似乎不起作用:/ – BobSki

+1

它確實有效,您是否在加載事件中執行此操作,如果是這樣,則無法工作。 'dgvfields.Rows(i).DefaultCellStyle.BackColor = YOURCOLOR'可以工作,但不能在加載時完成,因爲它會阻止單元格被更改。看看[** RowPostPaint **](https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.rowpostpaint(v = vs.110).aspx)你可以改變顏色如果你願意,這發生在DataGridView消息被抽取後。 – Codexer

+0

以及我從LOAD調用函數來填充網格 – BobSki

相關問題