具有绑定参数的Gridview来自Textbox的DateTime在排序时抛出DateTimeException

时间:2011-10-24 00:43:35

标签: c# datetime gridview sqldatasource formatexception

我遇到了ASP.NET GridView的问题。

GridView设置为通过SqlDataSource从存储过程中检索行。 Gridview有一个BoundField,它从表单上的ASP.NET文本框中填充存储过程的DateTime参数。

当我在ASP.NET文本框中输入无效的DateTime然后单击GridView的任何列进行排序时,GridView会在其PreRender事件中抛出FormatException:“位置0处的无效字符”

当TextBox中包含无效的DateTime时,如何拦截或阻止用户对GridView进行排序?

我已经尝试过表单验证器,但看起来那些不考虑GridView点击。我有一个想法是手动执行数据绑定和排序,以便我可以阻止正在进行的错误排序。有什么想法吗?

1 个答案:

答案 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排序之前触发!问题解决了。