Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在gridview的页面索引中移动时,字符串未被识别为有效的日期时间_C#_Asp.net - Fatal编程技术网

C# 在gridview的页面索引中移动时,字符串未被识别为有效的日期时间

C# 在gridview的页面索引中移动时,字符串未被识别为有效的日期时间,c#,asp.net,C#,Asp.net,当发生页面加载事件时,我将向gridview显示整个数据。但最初From Date和To Date都是空的,若我试图在gridview的pageindex之间切换,那个么它会显示上面的错误 这是我的页面加载代码 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { TextBox1.Attributes.Add("readonly", "readonly");

当发生页面加载事件时,我将向gridview显示整个数据。但最初From Date和To Date都是空的,若我试图在gridview的pageindex之间切换,那个么它会显示上面的错误

这是我的页面加载代码

    protected void Page_Load(object sender, EventArgs e)
{

    if (!IsPostBack)
    {
        TextBox1.Attributes.Add("readonly", "readonly");
        TextBox2.Attributes.Add("readonly", "readonly");

        myConn.Open();
        SqlCommand cmd = new SqlCommand("select User_id, LoginDate from LoginLog", myConn);
        DataTable dt = new DataTable();
        SqlDataAdapter sda = new SqlDataAdapter(cmd);
        sda.Fill(dt);
        GridView1.DataSource = dt;
        GridView1.DataBind();
        myConn.Close(); 
    }
}        
这是我的GridView1\u页面索引交换代码

 public void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    string ToDate = "";
    DateTime dtd = DateTime.Parse(TextBox2.Text);
    dtd = dtd.AddDays(1);
    ToDate = dtd.ToShortDateString();


    myConn.Open();
    SqlCommand cmd = new SqlCommand(@"select User_id , LoginDate from LoginLog where LoginDate between
                                     ('" + TextBox1.Text + "') and ('" + ToDate + "')", myConn);
    DataTable dt = new DataTable();
    SqlDataAdapter sda = new SqlDataAdapter(cmd);
    sda.Fill(dt);
    GridView1.DataSource = dt;
    GridView1.PageIndex = e.NewPageIndex;
    GridView1.DataBind();
    myConn.Close();
}

对于初学者,请注意您的代码对SQL注入是完全开放的。您基本上是在执行用户想要发送给您的任何代码。除此之外,错误具体发生在哪里?您使用的输入值是多少?您希望输入值是什么?为什么?调试器中
TextBox2.Text
的值是多少?一般来说,您应该投入一些时间来研究这个问题,因此有数千个类似的问题。您从
TextBox2传递的日期字符串可能重复。Text
它的格式应该与您运行此应用程序的系统日期相匹配。使用
DateTime.ParseExact()
而不是
DateTime.Parse()
,这样您就可以完全控制传递的日期字符串。给它一个固定的格式,例如dd-MM-yyyy,将允许您克服这种类型的运行时异常。请记住,应该从客户端传递相同的格式,否则它将再次引发异常。当
TextBox2.Text
持有空/空值时,您也将获得此异常
DateTime.Parse()
无法解析空内容
DateTime.ParseExact()
也无法解析空内容。我的建议是首先检查
!String.IsNullOrEmpty(TextBox2.Text)
,然后只继续。