通过datetimepicker过滤datagridviwe并显示结果

时间:2017-07-17 19:17:10

标签: c# datagridview datetimepicker

我在datagridview上有一个名为DOB的列 我上面有两个datetimepickers。我想在我点击加载按钮时显示DOB日期在我的两个datetimepicker范围内的记录

这是一个截图:

enter image description here

2 个答案:

答案 0 :(得分:0)

您想要更改您的SQL查询,以选择DOB值大于您的开始日期且小于结束日期的位置...

这是一个非常基本的示例,它将datagridview与这样的选择绑定在一起。

我已经从记忆中写下了这些内容,多年来我一直没有这样做,所以我不保证这是否有效,但它应该让你开始。

SqlConnection conn = new SqlConnection(connectionString);
string sql = "SELECT * FROM Table WHERE DOB > @startdate and DOB < @enddate";

SqlCommand cmd = new SqlCommand(sql, conn);

cmd.Parameters.Add(new SqlParameter("@startdate", DateTimePicker1.Date));
cmd.Parameters.Add(new SqlParameter("@enddate", DateTimePicker2.Date));

SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;

DataSet ds = new DataSet();
da.Fill(ds);

DataGridView1.DataSource = ds.Tables[0];
DataGridView1.DataBind();

答案 1 :(得分:0)

  1. 假设DataGridViewDataSource设置为a  DataTable
  2. 现在,我们将dtp1,dtp2作为两个DateTimePickers
  3. 我将DataTable的第一列命名为dob,第2列为年龄,第3列为    名称
  4. 以下是加载按钮的代码。

    private void btnLoad_Click(object sender, EventArgs e)
    {
        //validation
        if (DateTime.Compare(dtp1.Value.Date, dtp2.Value.Date) > 0)
        {
            MessageBox.Show("The start date cannot be greater than the end 
            date.");
            dtp1.Focus();
            return;
        }
    
        DataTable dt = (DataTable)dgv.DataSource;
        DataView dv = new DataView();
        dv = dt.DefaultView;
        dv.RowFilter = "dob >= '" + dtp1.Value.Date + "' and  dob <= '" +   
        dtp2.Value.Date + "'";
    }