2014-02-18 5 views
0

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

Это может фильтровать содержимое моих данныхGridView2, но перед этим я должен щелкнуть курсор за пределами 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.

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

+1

проверка [это MSDN сообщение] (http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.cellvaluechanged%28v=vs.110%29.aspx) о Событие CellValueChanged, которое объяснит, почему вам необходимо прослушать [CurrentCellDirtyStateChanged] (http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.currentcelldirtystatechanged%28v=vs.110%29. aspx), а также – har07

ответ

4

Для этого необходимо использовать 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 
+0

спасибо @Mr CodeXer. Теперь это работает! Я заменяю «dgv» на «dataGridView1» (кроме «Me.dgv.DataSource = dt»), потому что именно там происходит событие. – slek

+0

Я знал, что это будет! Счастливое кодирование и ваш прием! – Codexer

 Смежные вопросы

  • Нет связанных вопросов^_^