GridView数据绑定 - 超时

时间:2012-09-27 18:01:26

标签: c# .net timeout

我有ASP.NET页面,它通过Page_Load和Binds GridView上的SqlDataSource调用存储过程。在PageLoad上,我正在做这样的事情:

string connectionString = BLTutela.BLclsDatabaseConfigurations.GetDefaultConnectionString();
dataSource.ConnectionString = connectionString;
dataSource.SelectParameters["ReportFromDate"].DefaultValue = reportFromDateValue.Date.ToString();
...            
GridView1.DataSource = dataSource;
GridView1.DataBind();

dataSource是SqlDataSource并调用StoredProcedure。 代码正在运行,但它只是第一个版本,因为可能存在以下问题(我认为这些问题可能会发生,因为它是生成很长报告的Report页面):

1)存储过程可能会运行太长时间 - > SessionTimeout可能会发生,并且用户也很长时间没有看到系统的任何响应

2)即使存储过程已经完成,将数据加载到gridview也可能是一个非常漫长的过程。这可能会导致另一个会话超时。

我需要一种溶剂 1)不显示长服务器进程的会话超时(存储过程) 2)在gridview中显示数据没有超时, 3)显示数据加载时的进度条。

我从未使用过Threads或AsyncCalls,所以我想先做一些调查。

目前我找到了以下链接: http://madskristensen.net/post/Asynchronous-GridView-in-5-simple-steps.aspx 我想知道这是否适合我的情况以及我不知道的问题。

1 个答案:

答案 0 :(得分:4)

要解决您的问题,您可以定义Timeout on your string connection

调整Connect Timeout属性

<connectionStrings>
 <add name="ConnectionString" connectionString="Data Source=;Initial Catalog=;Persist Security Info=True;User ID=;Password=;Connect Timeout=200" providerName="System.Data.SqlClient"/>
</connectionStrings>

您可以在SqlDataSource的选择事件中设置超时值:

protected void SqlDataSource1_Selecting(object sender,
SqlDataSourceSelectingEventArgs e)
{
   e.Command.CommandTimeout = 200;
}