原来DataSet中有两个表dt1,dt2,有一个relation("1-2"),现在我想在DataSet中插入一个表dt3,然后删除relation("1-2"),并添加两个新的relation,用来关联dt1-dt3和dt3-dt2。可是运行出错,错误说:relation没有创建成功,由于没有指定相应的父值。请高手指点错在哪里?如何实现?谢谢!代码如下:
DataSet ds = new DataSet();
DataTable dt1 = new DataTable();
dt1.Columns.Add("AA");
dt1.Columns.Add("BB");
ds.Tables.Add(dt1);DataTable dt2 = new DataTable();
dt2.Columns.Add("AA");
dt2.Columns.Add("CC");
ds.Tables.Add(dt2);DataRow dr1 = dt1.NewRow();
dr1["AA"] = "aa";
dr1["BB"] = "bb";
dt1.Rows.Add(dr1);DataRow dr2 = dt2.NewRow();
dr2["AA"] = "aa";
dr2["CC"] = "cc1";
dt2.Rows.Add(dr2);
DataRow dr3 = dt2.NewRow();
dr3["AA"] = "aa";
dr3["CC"] = "cc2";
dt2.Rows.Add(dr3);ds.Relations.Add("1-2", dt1.Columns["AA"], dt2.Columns["AA"]);DataTable dt3 = new DataTable();
dt3.Columns.Add("P");
dt3.Columns.Add("C");
ds.Tables.Add(dt3);
DataRow dr4 = dt3.NewRow();
dr4["P"] = "aa";
dr4["C"] = "aa";
dt3.Rows.Add(dr4);ds.Relations.Remove("1-2");ds.Relations.Add("1-3", dt1.Columns["AA"], dt3.Columns["P"]);
ds.Relations.Add("3-2", dt3.Columns["C"], dt2.Columns["CC"]);// 报错行。
DataSet ds = new DataSet();
DataTable dt1 = new DataTable();
dt1.Columns.Add("AA");
dt1.Columns.Add("BB");
ds.Tables.Add(dt1);DataTable dt2 = new DataTable();
dt2.Columns.Add("AA");
dt2.Columns.Add("CC");
ds.Tables.Add(dt2);DataRow dr1 = dt1.NewRow();
dr1["AA"] = "aa";
dr1["BB"] = "bb";
dt1.Rows.Add(dr1);DataRow dr2 = dt2.NewRow();
dr2["AA"] = "aa";
dr2["CC"] = "cc1";
dt2.Rows.Add(dr2);
DataRow dr3 = dt2.NewRow();
dr3["AA"] = "aa";
dr3["CC"] = "cc2";
dt2.Rows.Add(dr3);ds.Relations.Add("1-2", dt1.Columns["AA"], dt2.Columns["AA"]);DataTable dt3 = new DataTable();
dt3.Columns.Add("P");
dt3.Columns.Add("C");
ds.Tables.Add(dt3);
DataRow dr4 = dt3.NewRow();
dr4["P"] = "aa";
dr4["C"] = "aa";
dt3.Rows.Add(dr4);ds.Relations.Remove("1-2");ds.Relations.Add("1-3", dt1.Columns["AA"], dt3.Columns["P"]);
ds.Relations.Add("3-2", dt3.Columns["C"], dt2.Columns["CC"]);// 报错行。
解决方案 »
- 新手求教C#内存拷贝
- url参数编码问题
- 请教Castle ActiveRecord的问题
- 请教高手,C#可以实现SSH通讯数据的获取吗,比如使用SOCKET来获取TELNET那样的!
- 问一个弱智的问题...在visual studio里面如何自动完成方法名之后的括号?
- sql企业管理器中,多个表间关系的拖拉,要怎么实现。
- 为什么页面的Request.QueryString["username"].ToString()的值总是传不过
- 求高手,关于C#设置语言CurrentUICulture在英文win7下报错
- 如何将数据库数据通过xml形式export成一个ms project 文件?
- 分页问题
- 是把基础理论都搞懂了再写代码呢还是仅知道个大概,边写边查帮助?哪个学习方式好?
- txt怎么转成dbf
http://www.syncfusion.com/faq/windowsforms/search/1012.aspx
一般情况下的Relation添加是没有问题的,方法我也知道,比如:
ds.Relations.Add("1-3", dt1.Columns["AA"], dt3.Columns["P"]);
这一行就没有报错,但是不知道为什么
ds.Relations.Add("3-2", dt3.Columns["C"], dt2.Columns["CC"]);// 报错行。
就报错了。
为什么有数据的时候该relation就这么麻烦。请指点为什么这个地方错了,谢谢!
ds.Relations.Add("3-2", dt3.Columns["C"], dt2.Columns["CC"]);// 报错行。
改成:
ds.Relations.Add("3-2", dt3.Columns["C"], dt2.Columns["CC"],false);
这个方法我试过了,运行可以通过,可是就没有方法通过GetChildRow()方法获得子表中的数据行了。结合程序的结构我做了一个逻辑,绕过了这个问题,不过心中还是不爽,呵呵。先结贴了,谢谢大家!