VB. NET - комбинированный фильтр Datagridview и нулевое значение - PullRequest
0 голосов
/ 28 февраля 2020

Я прочитал этот пост Каскадные / зависимые столбцы 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
...