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 = 'Jon'" 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 回答