我有一个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 ,但这不是我真正想要的。
答案 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
菲利普