Не зная, как ваши данные организованы, вы можете сделать это, привязав 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
Можете ли вы предоставить дополнительную информацию? Код выглядит отлично, как это. –
@ProGrammer, когда я выбираю идентификатор студента 1 из comboBoxStudentID, datagridview отображает строку, контактирующую с идентификатором студента 1. Но когда я выбираю другой идентификатор студента, он не работает, и я не знаю почему. – user3219333
Вы проверили, что текст ограничен идентификатором '' 2 "', а не '' 2 "' или что-то подобное? –