DataGrid中的多个数据源(ASP.NET)

时间:2010-02-04 15:40:06

标签: asp.net sql sql-server visual-studio-2008

我想知道我们是否可以将不同数据源中的数据实现并提取到DataGrid中。 比方说,我有一个3个存储过程:

我所做的是拖动3个数据源并在每个存储过程中对其进行配置。

第一个存储过程:返回@id和@name 第二个存储过程:返回@ name,@ server和@location 第三个存储过程:返回@age和@years

我想只显示第一个SPROC的@id,第二个SRPOC的@server和第三个SPROC的@age,并将它绑定到一个DataGrid。

感谢。

3 个答案:

答案 0 :(得分:4)

您无法在任何控件上设置多个数据源。

为什么不创建一次性检索所需信息的存储过程?然后,您可以将结果绑定到DataGrid。

答案 1 :(得分:1)

我同意Oded的观点。拥有一个源使其易于管理/调试。但是如果您希望拥有多个数据源,我会使用这些数据源填充数据集,从该数据集生成数据视图(选择适当的数据)并将视图绑定到数据网格。来自here

的示例
private void btnLoadData_Click(object sender, System.EventArgs e)
{
    string connectionString = "server=P-III; database=programmersheaven;" +
                      "uid=sa; pwd=;";
    SqlConnection conn = new SqlConnection(connectionString);
    string cmdString = "SELECT * FROM article";
    SqlDataAdapter dataAdapter = new SqlDataAdapter(cmdString, conn);
    DataSet ds = new DataSet();
    dataAdapter.Fill(ds, "article");
    cmdString = "SELECT * FROM author";
    dataAdapter = new SqlDataAdapter(cmdString, conn);
    dataAdapter.Fill(ds, "author");
    DataRelation relation = new DataRelation("ArtAuth", 
            ds.Tables["author"].Columns["authorId"], 
            ds.Tables["article"].Columns["authorId"] 
            );
    ds.Relations.Add(relation);
    DataView dv = new DataView(ds.Tables["author"]);
    dgDetails.DataSource = dv;
}

答案 2 :(得分:1)

您可以在sqldatasource属性的selectcommand中执行内部联接查询,从数据库中选择所需内容,然后从datagrid.datasourceID控件中访问sqldatasource