DataGridView中显示联合查询【转】

Posted on 2014-04-23 16:05  小木屋  阅读(346)  评论(0编辑  收藏  举报
如果要显示两张数据库表的记录,最简单的方法是检索时将两张表中你要的数据一次检索出来,放入同一个DataTable来显示。

如果要显示两个以上DataTable中的数据,则需要将DataTable放入DataSet并建立relation就可以显示了。

下面是刚做的一个例子。另外,父表一定要有主键。建立关联时要用主键。

private void button1_Click(object sender, System.EventArgs e)
{
DataTable dtName = new DataTable("NameDt");
dtName.Columns.Add("ID", typeof(string));
dtName.Columns.Add("Name", typeof(string));
dtName.PrimaryKey = new DataColumn[] {dtName.Columns["ID"] };
dtName.Rows.Add("1", "Name1");

DataTable dtAddress = new DataTable("AddressDt");
dtAddress.Columns.Add("ID", typeof(string));
dtAddress.Columns.Add("Address", typeof(string));
dtAddress.Rows.Add("1", "Address1");
dtAddress.Rows.Add("1", "Address2");

DataSet ds = new DataSet();
ds.Tables.Add(dtName);
ds.Tables.Add(dtAddress);

// 关键!建立表之间的关联
ds.Relations.Add("ForName", dtName.Columns["ID"], dtAddress.Columns["ID"]);
// 在子表中添加计算列,引用父表的数据。
dtAddress.Columns.Add("Name", typeof(string), "Parent(ForName).Name");

dataGridView1.AutoGenerateColumns = false;
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "AddressDt";
}

Copyright © 2024 小木屋
Powered by .NET 8.0 on Kubernetes