Как сделать событие textChanged в datagridview?

Я исправил событие textChanged как для своего представления данных, но мне не удалось получить желаемый результат. DataGridView1 должен фильтровать содержимое dataGridView2 всякий раз, когда я изменяю текст в его ячейке/ячейках.

Это может фильтровать содержимое моего dataGridView2, но перед этим я должен щелкнуть курсор за пределами dataGridView1/нажать Tab. Вот мой код:

Private Sub DataGridView1_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit


        Dim con1 As OleDbConnection = con
        con1.Open()
        Dim dt As New DataTable
        Dim _command As OleDbCommand = New OleDbCommand()
        _command.Connection = con1
        _command.CommandText = "SELECT * FROM table_name WHERE " & likeContent & ""

        dt.Load(_command.ExecuteReader)


        Me.dgv.DataSource = dt

        con1.Close()


End Sub

«likecontent» — это место, где я храню текст в своем dataGridView1.

Как мой dataGridView2 будет обновляться только с помощью события textChanged как из моего dataGridView1?


person slek    schedule 18.02.2014    source источник
comment
проверьте это Сообщение MSDN о событии CellValueChanged, в котором объясняется, почему вам нужно слушать CurrentCellDirtyStateChanged, а также   -  person har07    schedule 18.02.2014


Ответы (1)


Для этого вы должны использовать события CellValueChangedEvent и CurrentCellDirtyStateChanged.

 Private Sub dgv_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles dgv.CellValueChanged
   Dim con1 As OleDbConnection = con
    con1.Open()
    Dim dt As New DataTable
    Dim _command As OleDbCommand = New OleDbCommand()
    _command.Connection = con1
    _command.CommandText = "SELECT * FROM table_name WHERE " & likeContent & ""

    dt.Load(_command.ExecuteReader)


    Me.dgv.DataSource = dt

    con1.Close()
 End Sub

 Private Sub dgv_CurrentCellDirtyStateChanged(sender As Object, e As EventArgs) Handles dgv.CurrentCellDirtyStateChanged
  If dgv.IsCurrentCellDirty Then
    dgv.CommitEdit(DataGridViewDataErrorContexts.Commit)
  End If
 End Sub
person zaggler    schedule 18.02.2014
comment
спасибо @Mr CodeXer. Теперь это работает! Я заменяю dgv на dataGridView1 (кроме 'Me.dgv.DataSource = dt'), потому что именно здесь происходит событие. - person slek; 18.02.2014