2012-01-30 3 views
0

データセットとデータビューについて混乱しています。データセットを使用してデータを更新するか、データビューを使用してデータをフィルタリングしますが、同時に両方を同時に処理することはできません。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 

これは私にとってうまくいくデータビューのデータをフィルタリングするコードです。 しかし、後で、私はdatagridview上の更新データの別の機能を実装する必要があります、私はインターネット上でデータの代わりにdatasetとしてデータセットを使用する必要が見つかりました。

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

Update操作を行うには、SqlDataAdapterでDataSet(またはDataTable)を使用する必要があります。 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はすでに正しいです。 DataSetを使用する最初のフィルタ、DataSetを使用する2番目の更新データベース。

関連する問題