我有以下XML文档:
<Form ID="1">
<Persons>
<Person Name="Mike"/>
<Person Name="Alan"/>
</Persons>
</Form>
我已根据.XSD文件创建了Strongly Typed DataSet文件(.XSD)和MyForm.cs文件
然后,如何将新Person添加到table Persons?
我试过那段代码:
Form_3 form = new Form_3();
form.ReadXml(TextBox1.Text, XmlReadMode.Auto)
Form3.Person newPerson= form.Person.NewPersonRow();
newPerson.Name= "Tony";
form.Person.Rows.Add(newPerson);
但结果是:
<Form ID="1">
<Persons>
<Person Name="Mike"/>
<Person Name="Alan"/>
</Persons>
<Person Name="Tony"/>
</Form>
所以,我尝试了那段代码:
Form3.Person newPerson= form.Person.NewPersonRow();
newPerson.Name= "Tony";
form.Persons.Rows.Add(newPerson)
但这引起了例外:
"This row already belongs to another table."
那么如何解决这个问题?
[编辑] 这是我的Form_3.XSD文件架构: Click here to see
答案 0 :(得分:5)
假设Persons是你的类型化DataSet实例form
中的DataTable,我相信你正在尝试从一个DataTable(form.Person)向另一个DataTable(表单)中的一行添加一行。人)。即使两个DataTable具有相同的架构,也无法执行此操作。
要解决此问题(并将新记录添加到Persons DataTable),请添加更改:
Form3.Person newPerson= form.Person.NewPersonRow();
newPerson.Name= "Tony";
form.Persons.Rows.Add(newPerson)
为:
Form3.PersonsRow newPerson = form.Persons.NewPersonsRow();
newPerson.Name = "Tony";
form.Persons.AddPersonsRow(newPerson);
编辑 - 发布架构后
我认为这会做你需要的。
Form_3 form = new Form_3();
Form_3.PersonRow newPerson = form.Person.NewPersonRow();
newPerson.Person_Text = "Tony";
form.Person.AddPersonRow(newPerson);
请注意,根据您的架构(至少截图;我没有检查您的链接),Person表没有Name列。我改为使用了Person_Text字段。
答案 1 :(得分:2)
最后!它有效:)
我只需插入该行:
newPerson.Form_Id = 0;
由于这个原因,框架知道在哪里插入newPersonRow
所以,代码看起来像这样:
Form3.Person newPerson= form.Person.NewPersonRow();
newPerson.Name= "Tony";
newPerson.Form_Id = 0;
form.Person.Rows.Add(newPerson);
谢谢你们的帮助! :)强>
答案 2 :(得分:1)
尝试使用ImportRow方法。