C# 在gridview的页面索引中移动时,字符串未被识别为有效的日期时间
当发生页面加载事件时,我将向gridview显示整个数据。但最初From Date和To Date都是空的,若我试图在gridview的pageindex之间切换,那个么它会显示上面的错误 这是我的页面加载代码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");
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)
,然后只继续。