0

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

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

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

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

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

4

1 回答 1

0

我通过像这样扩展 Textbox.OnTextChanged 事件解决了这个问题:

protected void tbTo_TextChanged(object sender, EventArgs e)
{
    DateTime temp;

    if(DateTime.TryParse(tbTo.Text,out temp)==false)
    {
        tbTo.Text = "";
    }
}

这在 GridView 排序之前触发!问题解决了。

于 2011-10-24T15:33:18.873 回答