2012-01-30 2 views
0

Я запутался в наборе данных и dataview, которые я либо использую набор данных для обновления данных, либо данных для фильтрации данных, но не могут одновременно иметь вместе.об обновлении данных о datagridview и фильтре

Private Sub searchStaff_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 

     ds = New DataSet 

     dv = New DataView 

     Dim ad As New SqlDataAdapter("SELECT * FROM staff", connection) 

     ad.Fill(ds, "staff") 

     dv.Table = ds.Tables("staff") 

     Me.DataGridView1.DataSource = dv 
End Sub 

Private Sub txtSearch_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSearch.TextChanged 

     Try 
       dv.RowFilter = "StaffName like '" & txtSearch.Text & "*'" 

      Catch ex As Exception 
     End Try 
     End Sub 

это код фильтрации данных в dataview, который отлично подходит для меня. , но позже я должен реализовать другую функцию обновления данных в datagridview, что я нашел в Интернете, требует, чтобы я использовал набор данных как источник данных, а не dataview.

Private Sub searchStaff_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 

     connection = New SqlConnection(connectionString) 
     ds = New DataSet 
     cmd = New SqlCommand("SELECT * FROM staff", connection) 
     adp=New SqlDataAdapter(cmd) 
     adp.Fill(ds, "staff") 
     Me.DataGridView1.DataSource = ds 
     Me.DataGridView1.DataMember = "staff" 

    End Sub 
Private Sub btnUpdate_ClickEvent(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpdate.ClickEvent 
    Dim cmdbuilder As New SqlCommandBuilder(adp) 
    Dim i As Integer 

    Try 
     i = adp.Update(ds, "staff") 
     MsgBox("Record updated= " & i) 

    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 
End Sub 

так я надеюсь, что некоторые 1 может показать мне, как я могу иметь обе функции «обновления, фильтр» в то же время, используя какой источник данных?

ответ

0

Вы должны использовать DataSet (или DataTable) с SqlDataAdapter для выполнения операции обновления; DataView используется для данных фильтра, но не для фиксации изменений в базе данных. Вот пример для метода searchStaff_Load:

Private Sub searchStaff_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load   

    connection = New SqlConnection(connectionString)  
    ds = New DataSet   
    cmd = New SqlCommand("SELECT * FROM staff", connection)  
    adp=New SqlDataAdapter(cmd)   
    adp.Fill(ds, "staff") 
    Me.DataGridView1.DataSource = ds.Tables("staff").DefaultView 'Assign DataView to grid 
    'Me.DataGridView1.DataMember = "staff"  'No need when using DataView 

End Sub 

txtSearch_TextChanged и btnUpdate_ClickEvent уже правильно. Первый фильтр с использованием DataView, второй базы данных обновлений с использованием DataSet.

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

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