4

これで私を助けてくれることを願っています。

datagridviewたとえば、名前などの特定のキーワードを使用して自分をフィルタリングしたいと思います。私はデータセットを使用し、それをデータソースにバインドしてから、datagridview表示のために自分にバインドしました。

を使用するbindingsource.filterと、結果が得られません。

これが私のコードです:

    Dim ds As New DataSet
    Dim bs As New BindingSource

    Dim sql As String = "SELECT TOP 10 * FROM dbo.DimCustomer"
    Dim connection As New SqlConnection(sqlconnectionstring)
    Dim dataadapter As New SqlDataAdapter(sql, connection)



    connection.Open()
    ds.Clear()
    dataadapter.Fill(ds, "Customer")
    connection.Close()


    bs.DataSource = ds

    dgv1.DataSource = bs
    dgv1.DataMember = "Customer"
    bs.Filter = "FirstName = 'Jon'"
4

3 に答える 3

5

助けていただきありがとうございますが、以下のコードで動作するようになりました:

Dim sql As String = "select * from HumanResources.vEmployee"
Dim connection As New SqlConnection(sqlconnectionstring)
Dim dataadapter As New SqlDataAdapter(sql, connection)
Dim dsView As New DataView()

Try
  connection.Open()
  ds.Clear()
  dataadapter.Fill(ds, "test")
  dsView = ds.Tables(0).DefaultView
  bs.DataSource = dsView
  dgv1.DataSource = bs
  bs.Filter = "FirstName like 'J%'"
Catch ex As Exception
  MessageBox.Show("Error while connecting to SQL Server." & ex.Message)
Finally
  connection.Close()
End Try
于 2013-01-01T14:53:54.007 に答える
0

私の名前はモハメド・ホスニーです

あなたのコードは良好で、エラーはありませんが、いくつかの変更を加える必要があります。最初に:テーブル名をデータセットに追加します。bs.DataSource = ds.Tables["DimCustomer"] datagridview へのバインディング ソース

bs.Filter = "FirstName = 'ジョン'" dgv1.DataSource = bs

また、行 dgv1.DataMember = "Customer" は必要ないと思います

これを試してみて、これがうまくいかない場合は、完全なコードを提供しますが、C#で何度も作成します。

www.hcsmedia.org または www.hosysys.com で私を見つけてください

于 2012-12-31T20:29:19.810 に答える
0

問題は、バインディングソースがデータセットではなくデータビューを指す必要があることだと思います。MSDN サイトへのリンクと、もう少し詳しい説明があります。ここには、Dataviewに関する詳細情報もあります。

これをテストする時間はありませんでしたが、論理的に正しいと思います。これを試すことができますか?

   dim dsView as new DataView(ds.Tables("Customer"))

   bs.DataSource = dsView
   dgv1.DataSource = bs
   dgv1.DataMember = "Customer"
   bs.Filter = "FirstName = 'Jon'"
于 2012-12-31T16:06:19.543 に答える