C# 打印前按日期筛选DataGridView

C# 打印前按日期筛选DataGridView,c#,datetime,datagridview,C#,Datetime,Datagridview,我通过时间戳列过滤DataGridView,以便用户可以确定要打印的数据的日期。下面是我如何创建过滤后的DataGridView。但是,为了获得正确的日期,例如2010年2月8日至2010年2月10日,我必须选择一个日期,因此日期范围必须是2010年2月7日至2010年2月10日,才能获得2010年2月8日至2010年2月10日。这对用户来说太混乱了 时间戳声明为SqlDbType.DateTime 我在哪里搞砸了 private void CreateFilteredDataGridView(

我通过
时间戳
列过滤DataGridView,以便用户可以确定要打印的数据的日期。下面是我如何创建过滤后的
DataGridView
。但是,为了获得正确的日期,例如2010年2月8日至2010年2月10日,我必须选择一个日期,因此日期范围必须是2010年2月7日至2010年2月10日,才能获得2010年2月8日至2010年2月10日。这对用户来说太混乱了

时间戳声明为
SqlDbType.DateTime

我在哪里搞砸了

private void CreateFilteredDataGridView(DataGridView dgv, string fromDate, string toDate)
{
    try
    {
        myDataSet = new DataSet();
        myDataSet.CaseSensitive = true;

        DataAdapter.SelectCommand.Connection = myConnection;
        DataAdapter.TableMappings.Clear();
        DataAdapter.TableMappings.Add("Table", "GARAGE");
        DataAdapter.Fill(myDataSet);

        myDataView = new DataView(myDataSet.Tables["GARAGE"], "TIMESTAMP >= '" + 
        Convert.ToDateTime(fromDate) + "' AND TIMESTAMP <= '" + 
        Convert.ToDateTime(toDate) + "'", "TIMESTAMP", DataViewRowState.CurrentRows);

        dgv.DataSource = myDataView;
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }

}
private void createFilteredatagridView(DataGridView dgv,字符串fromDate,字符串toDate)
{
尝试
{
myDataSet=新数据集();
myDataSet.CaseSensitive=true;
DataAdapter.SelectCommand.Connection=myConnection;
DataAdapter.TableMappings.Clear();
TableMappings.Add(“Table”,“GARAGE”);
DataAdapter.Fill(myDataSet);
myDataView=新数据视图(myDataSet.Tables[“GARAGE”],“TIMESTAMP>=”+

Convert.ToDateTime(fromDate)+“”和TIMESTAMP我不能告诉您将在什么时间传递到该方法,但可能是DateTime的时间部分导致了问题。请确保起始日期从00:00:00开始(如果不包括时间,则应该已经开始)并且结束日期包含23:59:59。

我无法告诉您使用该方法的时间,但可能是DateTime的时间部分导致了问题。请确保起始日期从00:00:00开始(如果不包含时间,则应该已经开始)结束日期包含23:59:59。

日期的格式分别为2010年8月2日和2010年10月2日。传递到CreateFilteredataGridView时没有时间。调用Convert.ToDateTime时,会将12 AM追加到结束日期。对,因此您要求DataView仅包含从“2010年8月2日00:00:00”到“2010年10月2日00:00:00”的日期,这是uld排除了2010年2月10日(即上午12:01到下午12:59)的几乎所有条目。明白了。通过在toDate上执行.AddHours(23.984)修复了它,并将其提升到23:59:02,这足够精确,我认为实际执行AddHours(23)、AddHours(59)和AddSeconds(59)更好,否则我可能会错过57秒的条目!日期的格式分别为2010年2月8日和2010年2月10日。没有时间传递给CreateFilteredataGridView。调用Convert.ToDateTime时,会在末尾追加12 AM。对,因此您要求DataView仅包括从“2010年2月8日00:00:00”到“2010年2月10日00:00:00”的日期,而ch将排除2010年2月10日(即上午12:01到下午12:59)的几乎所有条目。明白了。通过在toDate上执行.AddHours(23.984)修复了它,并将其提升到23:59:02,这足够精确,我认为实际执行AddHours(23)、AddHours(59)和AddSeconds(59)更好,否则我可能会错过57秒的条目!