我遇到了ASP.NET GridView的问题。
GridView设置为通过SqlDataSource从存储过程中检索行。 Gridview有一个BoundField,它从表单上的ASP.NET文本框中填充存储过程的DateTime参数。
当我在ASP.NET文本框中输入无效的DateTime然后单击GridView的任何列进行排序时,GridView会在其PreRender事件中抛出FormatException:“位置0处的无效字符”
当TextBox中包含无效的DateTime时,如何拦截或阻止用户对GridView进行排序?
我已经尝试过表单验证器,但看起来那些不考虑GridView点击。我有一个想法是手动执行数据绑定和排序,以便我可以阻止正在进行的错误排序。有什么想法吗?
答案 0 :(得分:1)
我通过扩展Textbox.OnTextChanged事件解决了这个问题:
protected void tbTo_TextChanged(object sender, EventArgs e)
{
DateTime temp;
if(DateTime.TryParse(tbTo.Text,out temp)==false)
{
tbTo.Text = "";
}
}
这会在GridView排序之前触发!问题解决了。