簡體   English   中英

DataGridView檢查所有行vb.net

[英]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匹配,如何檢查所有行?

在不知道數據如何組織的情況下,可以通過將DataGridViewComboBox綁定到同一數據源來完成此操作。 由於未指定此項,而是查看代碼片段(似乎起作用),因此似乎在各行之間循環,並且如果第一列單元格中包含當前選定的組合框文本,則使該行可見。 否則,使該行不可見。

發布的代碼似乎可以正常工作,但是您可能需要考慮一種情況。 如果組合框包含在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM