我想知道我们是否可以将不同数据源中的数据实现并提取到DataGrid中。 比方说,我有一个3个存储过程:
我所做的是拖动3个数据源并在每个存储过程中对其进行配置。
第一个存储过程:返回@id和@name 第二个存储过程:返回@ name,@ server和@location 第三个存储过程:返回@age和@years
我想只显示第一个SPROC的@id,第二个SRPOC的@server和第三个SPROC的@age,并将它绑定到一个DataGrid。
感谢。
答案 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
。