winform中用datagrid显示主从表的问题 就是在行的最前面显示一个加号,点一下加号出来明细。在windows form中如何实现? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把多个表放到一个dataset里,然后设置关系dataSet.Relations.Add(DataColumn parentColumn, DataColumn childColumn); DataTable d1 = new DataTable();DataTable d2 = new DataTable();...DataSet ds = new DataSet();ds.Tables.Add(d1);ds.Tables.Add(d2);ds.Relations.Add(d1.Columns["ID"], d2.Columns["ID"]);dataGrid.DataSource = d1; //d1做主表,就有+号了 看看MSDN上有个演练,正是讲这方面的。 DataGrid支持DataSet的关联特性。所以你在数据绑定的时候必须绑定在父表上。例如:我们有两个表Department和Employee。dgCustomer.SetDataBinding(Department, "");//数据绑定dgCustomer.AllowNavigation = true;//允许导航Department就是父表。但是,必须注意的一点是,数据集上必须具有两个表之间的关系。你可以这样做:dataSet.Relations.Add("Department_Employee", dataSet.Tables["Department"].Columns["ID"], dataSet.Tables["Employee"].Columns["Department"], true);当然添加关系必须是在绑定数据集之前,我一般都是在填充了数据集之后马上就建立这些关系和主键。 我是这么做的,而且做了两种方法都没成功,所以才来问问看:第一次:// 主表DataSet ds1 = new DataSet();ds1 = GetDS1(); // 子函数取DataSet// 从表DataSet ds2 = new DataSet();ds2 = GetDS2();// 子函数取DataSetds1.Tables.Add(ds2.Tables[0]); <-- 出错“其他信息: DataTable 已属于另一个 数据集。”第二次:DataSet ds = new DataSet();// 主表GetDS1(ds); // 子函数取DataSet// 从表GetDS2(ds); // 子函数取DataSetds.Relations.Add(ds.Tables["主表"],ds.Tables["从表"]);dataGrid.DataSource = ds.Tables["主表"]; <-- 只出来主表的信息没有加号 这段代码有问题吗VB.Netsqlup = "update Employees set LastName='" + emp.LastName + "',FirstName='" + emp.FirstName + "',City='" + emp.City + "',Country='" + emp.Country + "',Sex='" + emp.Sex + "' where EmployeeID=" + emp.EmployeeID 用DATAGRID UPDATE 的时候,你的表里是必须要有主键的~ 你的最后一句有问题?你只指定一个表那样就只显示主表了。应该是dataGrid.DataSource = ds;这样就可以了。 多线程中子线程没有结束前关闭窗口的问题 C#初级菜菜鸟 webbrowser控件调用问题 系统重新登陆要如何实现 LinkButton 前加 UpdatePanel 为什么点击就没有反应了呢 在我的网页输入任意url地址,可以播放该url中的视频 关于:屏蔽任务管理器 复制文件 再加 多线程的问题 C# 代碼規則是怎樣的?誰發一份來看看 把窗体设置成MDI窗体的时,如何隐藏所设置的颜色 DataTimePicker??? textbox绑定到数据库表后,怎样取各个字段的值 请教C#中两个窗体中ListBox之间传值的问题。
DataTable d2 = new DataTable();...DataSet ds = new DataSet();
ds.Tables.Add(d1);
ds.Tables.Add(d2);ds.Relations.Add(d1.Columns["ID"], d2.Columns["ID"]);
dataGrid.DataSource = d1; //d1做主表,就有+号了
dgCustomer.AllowNavigation = true;//允许导航Department就是父表。但是,必须注意的一点是,数据集上必须具有两个表之间的关系。你可以这样做:
dataSet.Relations.Add("Department_Employee",
dataSet.Tables["Department"].Columns["ID"],
dataSet.Tables["Employee"].Columns["Department"], true);
当然添加关系必须是在绑定数据集之前,我一般都是在填充了数据集之后马上就建立这些关系和主键。
// 主表
DataSet ds1 = new DataSet();
ds1 = GetDS1(); // 子函数取DataSet// 从表
DataSet ds2 = new DataSet();
ds2 = GetDS2();// 子函数取DataSetds1.Tables.Add(ds2.Tables[0]); <-- 出错“其他信息: DataTable 已属于另一个 数据集。”
第二次:
DataSet ds = new DataSet();// 主表
GetDS1(ds); // 子函数取DataSet// 从表
GetDS2(ds); // 子函数取DataSetds.Relations.Add(ds.Tables["主表"],ds.Tables["从表"]);dataGrid.DataSource = ds.Tables["主表"]; <-- 只出来主表的信息没有加号
这样就可以了。