Я прочитал этот пост Каскадные / зависимые столбцы DataGridView ComboBox , и я сделал тот же проект с комбинированным списком данных и 2 столбцами, где второй комбинированный список является фильтром по выбору первого комбинированного списка. Я хотел бы иметь возможность отменить выбор во втором комбинированном списке, если пользователь выбрал по ошибке второй комбинированный список, который может очистить выбор ...
Здесь есть код, который я использовал: 1) первый комбинированный список FASE 2) второй комбинированный список - SOTTOFASE
Private Sub DataGridView1_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
Dim grid = DirectCast(sender, DataGridView)
If (grid.CurrentCell.ColumnIndex = 1) Then 'State column
Dim combo = DirectCast(e.Control, DataGridViewComboBoxEditingControl)
If (grid.CurrentRow.Cells(0).Value IsNot DBNull.Value) Then
Dim dvStates = New DataView(MondoDBDataSet1.Tables("SOTTOFASI"), $"n_fase = '{grid.CurrentRow.Cells(0).Value}'", "n_fase ASC", DataViewRowState.CurrentRows)
combo.DataSource = dvStates
combo.ValueMember = "n_sottofase"
combo.DisplayMember = "sottofase"
Else
combo.DataSource = Nothing
End If
End If
End Sub
Спасибо за помощь!
Это изображение из 3 шагов:
Шаги просмотра данных
РЕШЕНИЕ: Я реализовал событие KeyUp и установил значение ячейки в «dbnull», когда нажимаю кнопку «del»
Private Sub DataGridView1_KeyUp(sender As Object, e As KeyEventArgs) Handles DataGridView1.KeyUp
If GetAsyncKeyState(Keys.Delete) Then
Dim CellCombo As DataGridViewComboBoxCell
If DataGridView1.Rows(DataGridView1.CurrentRow.Index).Cells(1).Value <> -1 Then
CellCombo = DataGridView1.Rows(DataGridView1.CurrentRow.Index).Cells(1)
CellCombo.Value = DBNull.Value
End If
End If
End Sub