动态过滤DataGridView控件

时间:2013-03-15 13:25:37

标签: vb.net winforms datagridview datatable

我有一个datagridview控件,使用名为m_DeletedItemsDT的DataTable显示我的SQL Server数据库中的数据。

在网格上方,我有两个datatimepicker控件,因此用户可以选择开始和结束日期,然后单击cmdFilterData,它从db获取过滤数据集并使用以下查询刷新网格:

"SELECT * FROM ReturnUnpaidData_Audit WHERE [AuditDateTime]<='" & Me.dtpEndDate.Value.ToString("yyyy-MM-dd") & "' AND [AuditDateTime]>='" & Me.dtpStartDate.Value.ToString("yyyy-MM-dd") & "'"

我想要的是而不是另一次往返数据库,在网格上进行过滤,或在名为 m_DeletedItemsDT 的数据表上进行过滤,并在表单/类级别声明。

我试着看Filter DataGridView with the text entered in TextBox in WinForms ,但这不是我真正想要的。

1 个答案:

答案 0 :(得分:1)

我通过一些试验和错误解决了这个问题:

Dim dv As New System.Data.DataView

dv.Table = m_DeletedItemsDT
' "Server like '%" + textBox1.Text + "%'";
dv.RowFilter = "[AuditDateTime]<='" & Me.dtpEndDate.Value.ToString("yyyy-MM-dd") & "' AND [AuditDateTime]>='" & Me.dtpStartDate.Value.ToString("yyyy-MM-dd") & "'"
dgvDeletedRecords.DataSource = dv

如果是 cmdClearFilter 按钮,我只需执行以下操作:

    Dim dv As New System.Data.DataView

    Me.chkAUtoDates.Checked = False
    '        Call m_GetData()
    With dv
        .Table = m_DeletedItemsDT
        .RowFilter = ""
    End With

    dgvDeletedRecords.DataSource = dv

菲利普