[英]DataGridView check all Rows vb.net
Private Sub comboBoxStudentID_SelectedIndexChanged(sender As Object, e As EventArgs) Handles comboBoxStudentID.SelectedIndexChanged
For Each dr As DataGridViewRow In Me.dataGridViewStudent.Rows
If dr.Cells(0).Value.ToString.Contains(comboBoxStudentID.Text) Then dr.Visible = True Else dr.Visible = False
Next
End Sub
我創建了此方法來檢查並顯示包含與從comboBoxStudentID中選擇的學生ID相同的學生ID的行,問題是它僅檢查DataGridView的第一行。 如果學生ID匹配,如何檢查所有行?
在不知道數據如何組織的情況下,可以通過將DataGridView
和ComboBox
綁定到同一數據源來完成此操作。 由於未指定此項,而是查看代碼片段(似乎起作用),因此似乎在各行之間循環,並且如果第一列單元格中包含當前選定的組合框文本,則使該行可見。 否則,使該行不可見。
發布的代碼似乎可以正常工作,但是您可能需要考慮一種情況。 如果組合框包含在DataGridView
列中的值,則當用戶在組合框中選擇一個值時, DataGridView
將僅顯示與當前組合框選擇匹配的那些值。 這似乎是您要嘗試執行的操作。
問題是如何重新顯示所有行?
組合框選擇更改為某個值后,用戶可以刪除選擇,但是除非您處理其他事件,否則所有行都不會顯示。 同樣,這種策略不是很直觀。 一個可能的解決方案(如下)僅在組合框項目的頂部添加了“重置”的頂部項目。 然后,當用戶選擇“重置”時,所有行將變為可見。 希望這可以幫助。
重申一下:您應該考慮使用DataSource
以及可能的BindingSource
,在此情況下將自動為您完成設置。 只是一個想法。
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
If ComboBox1.SelectedIndex > 0 Then
For Each dr As DataGridViewRow In DataGridView1.Rows
If (Not dr.IsNewRow) Then
If dr.Cells(0).Value.ToString.Contains(ComboBox1.Text) Then
dr.Visible = True
Else
dr.Visible = False
End If
End If
Next
Else
For Each row As DataGridViewRow In DataGridView1.Rows
row.Visible = True
Next
End If
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.