【发布时间】:2015-05-02 03:19:23
【问题描述】:
我在asp.net 中有两个gridviews 使用Ajax 的标签容器分隔。在一个按钮单击事件中,我希望使用来自两个不同存储过程的数据源填充两个网格视图。
第一个网格视图 - 每个租户的销售详细摘要
第二个网格视图 - 每个日期的合并销售组
这是代码
SqlCommand cmd = new SqlCommand("spDSRDetailed", con);
cmd.CommandTimeout = 120;
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@dateFrom", txtdatefrom.Text);
cmd.Parameters.AddWithValue("@dateTo", txtdateto.Text);
cmd.Parameters.AddWithValue("@Location", hdnLoc.Value);
cmd.Parameters.AddWithValue("@RP", hdnRP.Value);
try
{
con.Open();
grdDailySalesReport.EmptyDataText = "No Records Found";
grdDailySalesReport.DataSource = cmd.ExecuteReader();
grdDailySalesReport.DataBind();
}
catch (Exception ex)
{
throw ex;
}
finally
{
con.Close();
con.Dispose();
}
此代码仅适用于一个 gridview,我知道可以使用 SQLDatasource 执行此操作,但该方法不是我的选择,因为我使用了复杂的 SQL 查询,而不适合使用 SQLDATASOURCE.SELECTCOMMAND 执行此操作。
我试过了,它给了我这个错误
已经有一个打开的 DataReader 与此命令关联,必须先关闭。
SqlCommand cmd = new SqlCommand("spDSRDetailed", con);
cmd.CommandTimeout = 120;
cmd.CommandType = System.Data.CommandType.StoredProcedure;
SqlCommand cmd2 = new SqlCommand("spDSRConso", con);
cmd2.CommandTimeout = 120;
cmd2.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@dateFrom", txtdatefrom.Text);
cmd.Parameters.AddWithValue("@dateTo", txtdateto.Text);
cmd.Parameters.AddWithValue("@Location", hdnLoc.Value);
cmd.Parameters.AddWithValue("@RP", hdnRP.Value);
cmd2.Parameters.AddWithValue("@dateFrom", txtdatefrom.Text);
cmd2.Parameters.AddWithValue("@dateTo", txtdateto.Text);
cmd2.Parameters.AddWithValue("@Location", hdnLoc.Value);
cmd2.Parameters.AddWithValue("@RP", hdnRP.Value);
try
{
con.Open();
grdDailySalesReport.EmptyDataText = "No Records Found";
grdDailySalesReport.DataSource = cmd.ExecuteReader();
grdDailySalesReport.DataBind();
grdDSRConso.EmptyDataText = "No Records Found";
grdDSRConso.DataSource = cmd2.ExecuteReader();
grdDSRConso.DataBind();
}
catch (Exception ex)
{
throw ex;
}
finally
{
con.Close();
con.Dispose();
}
【问题讨论】:
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
-
好的。著名的。谢谢你:)
-
嗨@John,可以将我的问题的标题更改为:已经有一个打开的 DataReader 与此命令关联,必须先关闭。 (实际错误)
-
当然可以,但是应该省略“in ASP.NET C#”部分。它甚至不相关。
-
web.config 文件中有一个
customErrors部分,它允许使用漂亮的错误页面。不要太担心应用程序失败时的外观 - 而要担心修复应用程序并尽你所能确保将来不会发生问题。
标签: c# asp.net sql-server stored-procedures gridview