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个

我有两个存储过程:

  • 存储过程\状态\订单信息
  • spRO_状态_更改
  • 每个过程返回一个不同的表。我只有一个用户输入参数
    TN
    。我正在从搜索txt行读取此参数(
    inputnReturn.Value

    每个过程在不同的网格视图中发布数据

  • 存储过程状态订单信息-->>gvSearchResults
  • 存储过程状态更改-->>GridView1
  • 此代码仅将最后一个存储过程返回到最后一个gridView

  • 存储过程状态更改-->>GridView1
  • 我不知道我的错误在哪里,也不知道为什么我可以从2个过程中得到2个网格视图

    我将感谢你的帮助

    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
    对象-每个存储过程一个。。。。。。