在 vb net 中显示从 1 个平板电脑到 2 个过滤后的 datagridview 的数据

Posted

技术标签:

【中文标题】在 vb net 中显示从 1 个平板电脑到 2 个过滤后的 datagridview 的数据【英文标题】:display data from 1 tablet to 2 filtered datagridview in vb net 【发布时间】:2014-07-30 12:36:15 【问题描述】:

我有两个 datagridview 控件和一个表。我正在尝试使用 dgv1 上的一个过滤器和 dgv2 上的多个过滤器来显示数据。基本上我要问的是 dgv 1 应该在 7 月份显示所有具有截止日期的客户,而 dgv2 应该在 7 月份显示客户 john 的所有记录。两个 dgv 都从同一个表中提取记录。

我的问题是这两个都显示相同的信息。 这就是我到目前为止所拥有的。

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    dbprov = "Provider = Microsoft.ACE.OLEDB.12.0;"
    dbsource = "Data Source = C:\Users\Sonu\Desktop\VB_Projects\database1.accdb"
    sql = "SELECT * FROM T_Cutdata"
    sqlDelete = "SELECT * FROM T_DeletedData"
    con.ConnectionString = dbprov & dbsource
    con.Open()
    'MsgBox("Open")
    da = New OleDb.OleDbDataAdapter(sql, con)
    da.Fill(ds, "lawncutdata")

    Dim dv_all As DataView = ds.Tables("lawncutdata").DefaultView
    DataGridView1.DataSource = dv_all
    dv_all.RowFilter = "cutdate>='07/01/2014' and cutdate<='07/10/2014'"
    '"CustomerID = '" + s_customerID +"'"
    DataGridView1.DataSource = dv_all

    Dim dv_one As DataView = ds.Tables("lawncutdata").DefaultView
    dGridOneCustomer.DataSource = dv_one
    dv_one.RowFilter = "cutday='" + currentday + "' and customer_name='" + custname + "'"
    '"CustomerID = '" + s_customerID +"'"
    dGridOneCustomer.DataSource = dv_one

我一生都无法弄清楚为什么要这样做。我在想我可能需要创建一个新数据集并将第二个 dgv 绑定到该数据集。请帮忙,我卡住了。

提前谢谢你

【问题讨论】:

【参考方案1】:

您的代码的问题是,您使用dv_all.RowFilterdv_one.RowFilter 引用相同的对象。

使用Dim dv_one As DataView = ds.Tables("lawncutdata").Copy().DefaultView 作为第二个DataGridView 应该可以解决问题。

【讨论】:

【参考方案2】:

您在两个网格中使用相同的DataView(表格的默认视图)。您所要做的就是创建两个新的数据视图。

Dim dv_all As New DataView(ds.Tables("lawncutdata"))
Dim dv_one As New DataView(ds.Tables("lawncutdata"))

请注意,数据视图是reference type。

Dim dv_all As DataView = ds.Tables("lawncutdata").DefaultView
Dim dv_one As DataView = ds.Tables("lawncutdata").DefaultView

在上面的代码中,dv_alldv_one 都会指向同一个实例。

【讨论】:

以上是关于在 vb net 中显示从 1 个平板电脑到 2 个过滤后的 datagridview 的数据的主要内容,如果未能解决你的问题,请参考以下文章

如何从 vb.net 的播放列表中显示媒体播放器正在播放的文件?

vb.net2010从ACCESS的OLE字段读出图片显示到PictureBox控件上

Vb.NET 2.0 My.settings 无法正常工作

从 vb.net 中的表单外部获取突出显示的文本

从richtextbox逐行读取并显示在标签中(vb.net)

VB.NET 从 `Byte()` 类型到类型 'String is not Valid' 的转换