如何从一个存储过程填充多个 GridView 控件?

Mar*_*son 2 c# asp.net multiple-resultsets

我在 SQL Server 中有一个存储过程,它返回七个结果集。我想从 ASP.NET 调用此存储过程,并使用结果填充 ASP.NET 页面上的七个 GridView。我正在使用 SqlDataReader 来获取数据,但是我正在努力使用 C# 代码来填充 GridView。

我创建了一个 DAL 类来获取数据,其中有这个方法:

public SqlDataReader CheckDataIntegrity()
{
    SqlCommand cmd = new SqlCommand("cc.DataCheck");
    return MultipleResults(cmd);
}
Run Code Online (Sandbox Code Playgroud)

辅助方法 MultipleResults 如下所示:

private SqlDataReader MultipleResults(SqlCommand cmd)
{
    SqlConnection con = new SqlConnection(_connectionString);
    cmd.Connection = con;

    con.Open();
    SqlDataReader dr = cmd.ExecuteReader();
    con.Close();
    return dr;

}
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用以下内容调用页面上的组件:

private void FillGridViews()           
{
    DBUtil DB = new DBUtil();
    using (SqlDataReader dr = DB.CheckDataIntegrity())
    {
        if (dr.HasRows)
        {
            while (dr.Read())
            {
                GridView1.DataSource = dr;
                GridView1.DataBind();
            }
        }
    }
} 
Run Code Online (Sandbox Code Playgroud)

我确实在网上搜索了这方面的示例,但找不到任何内容。

您知道资源,或者有一个小例子可以分享吗?

谢谢。

Ari*_*ief 5

您应该使用 DataSet,它可以将多个表绑定到 GridView。

var dataset = GetDataSetForMy7GridViews();

// also valid: dataset.Tables["TableName"];
GridView1.DataSource = dataset.Tables[0]; 
GridView1.DataBind();

GridView2.DataSource = dataset.Tables[1];
GridView2.DataBind();

GridView3.DataSource = dataset.Tables[2];
GridView3.DataBind();

GridView4.DataSource = dataset.Tables[3];
GridView4.DataBind();

GridView5.DataSource = dataset.Tables[4];
GridView5.DataBind();

GridView6.DataSource = dataset.Tables[5];
GridView6.DataBind();

GridView7.DataSource = dataset.Tables[6];
GridView7.DataBind();
Run Code Online (Sandbox Code Playgroud)

由于您要绑定到 7 个不同的 GridView,因此您需要这样做。如果你按照你的代码来做:

>             while (dr.Read())
>             {
>                 GridView1.DataSource = dr;
>                 GridView1.DataBind();
>             }
Run Code Online (Sandbox Code Playgroud)

它只会绑定到 1 个 GridView。

补充:也许这个链接可以回答您的问题? http://www.codeguru.com/csharp/csharp/cs_network/database/article.php/c8715