C# 在ASP.NET中对2个不同的gridview调用多个存储过程
我有两个存储过程:C# 在ASP.NET中对2个不同的gridview调用多个存储过程,c#,sql-server,C#,Sql Server,我有两个存储过程: 存储过程\状态\订单信息 spRO_状态_更改 每个过程返回一个不同的表。我只有一个用户输入参数TN。我正在从搜索txt行读取此参数(inputnReturn.Value) 每个过程在不同的网格视图中发布数据 存储过程状态订单信息-->>gvSearchResults 存储过程状态更改-->>GridView1 此代码仅将最后一个存储过程返回到最后一个gridView 存储过程状态更改-->>GridView1 我不知道我的错误在哪里,也不知道为什么我可以从2个过程中得到2个
TN
。我正在从搜索txt行读取此参数(inputnReturn.Value
)
每个过程在不同的网格视图中发布数据
protected void btnSearch_Click(object sender, EventArgs e)
{
string connectionStr = ConfigurationManager
.ConnectionStrings["ConnectionString"].ConnectionString;
using (SqlConnection con = new SqlConnection(connectionStr))
{
con.Open();
using (SqlCommand cmd = con.CreateCommand())
{
cmd.CommandText = "[spRO_Status_OrderInfo]";
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "spRO_Status_Change";
cmd.CommandType = CommandType.StoredProcedure;
if (inputTNReturn.Value.Trim() != "")
{
SqlParameter param = new SqlParameter("@TN", inputTNReturn.Value);
cmd.Parameters.Add(param);
SqlDataReader rdr = cmd.ExecuteReader();
gvSearchResults.DataSource = rdr;
gvSearchResults.DataBind();
GridView1.DataSource = rdr;
GridView1.DataBind();
lblinputTNReturn.Text = inputTNReturn.Value;
}
}
if (inputTNReturn.Value == "")
{
inputTNReturn.Value = "Please add tracking number";
}
con.Close();
}
}
这里是设置第一个存储过程的地方
cmd.CommandText = "[spRO_Status_OrderInfo]";
cmd.CommandType = CommandType.StoredProcedure;
这里是覆盖上述内容的地方
cmd.CommandText = "spRO_Status_Change";
cmd.CommandType = CommandType.StoredProcedure;
您没有添加第二个命令文本/类型,只是写了第一个命令,这就是为什么您只看到第二个命令出现在输出中。但是在这种情况下,我必须重新创建每个过程的连接,因为SqlDataReader rdr=cmd.ExecuteReader();SQLDatareader无法使用相同的cmd.ExecuteReader();所以我需要重新创建每个过程的新连接?并创建:GridView1.DataSource=rdr1;GridView1.DataBind()@BorisVainrub您可以编写一个通用方法来处理从数据库检索结果,只需使用不同的SP名称即可,但确实需要为每组结果打开一个单独的连接。这就是它的工作原理。感谢Dale的帮助如果要执行两个存储过程,要获取两组不同的数据,必须有两个独立的
SqlCommand
对象-每个存储过程一个。。。。。。