在GridView自动数据绑定中捕获错误

时间:2009-06-19 15:09:03

标签: asp.net data-binding gridview error-handling

我有一个设置了DataSourceID的gridview,因此数据绑定会自动发生。问题是,有时,SqlDataSource中定义的过程需要很长时间才能完成,因此绑定会带来超时过期错误。

如何在不手动数据绑定gridview并使用try / catch语句包围它的情况下如何捕获此错误?

4 个答案:

答案 0 :(得分:4)

如果在执行SqlDataSource时发生异常,则会触发其相应的动作后事件 - 在这种情况下为Selected。您可以选择为此事件创建事件处理程序,并在事件处理程序中说明您已处理异常。

此图显示了此交互如何与ObjectDataSource一起工作(该概念与SqlDataSource控件相同)。在检查下图时,将“ObjectDataSource”替换为“SqlDataSource”,将“Underlying Object”替换为“Database”,以使其与SqlDataSource相关。

The datasource control raises events before and after its action.

如您所见,在将数据发送到数据库之前引发了Selecting事件,并且在数据返回后引发了Selected事件(或者如果有异常)。

您可以在页面中创建一个Selected事件处理程序,并检查是否发生了异常,并决定是否要自己处理它。 Fredrik Normen有一个很好的博客文章:Handle the data-source control exception by your own.

其他阅读材料:Accessing and Updating Data in ASP.NET: Examining the Data Source Control's Events

快乐编程!

答案 1 :(得分:0)

为什么不修复查询超时的问题呢?优化DB(首选)或将连接/命令超时设置为高于当前值。

您可以通过挂钩SqlDataSource Selecting event

按如下方式调整超时
protected void ds_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
    {
        e.Command.CommandTimeout = 5000;
    }

如果您使用的是SQL Server,您可能需要查看索引调整向导/ tuning advisorshow query execution planSQL Server Profiler等工具。

答案 2 :(得分:0)

如何异步绑定?一旦完成,如果没有返回错误,回调函数可以调用数据绑定。

编辑:我猜这是手册......不是你想要的。

答案 3 :(得分:0)

您唯一能想到的就是处理Page_Error事件

http://msdn.microsoft.com/en-us/library/ed577840.aspx