我有以下 XML 文档:
<Form ID="1">
<Persons>
<Person Name="Mike"/>
<Person Name="Alan"/>
</Persons>
</Form>
我已经创建了强类型数据集文件 (.XSD) 和基于该 .XSD 文件的 MyForm.cs 文件
那么,如何向 Persons 表中添加一个新的 Person 呢?
我试过那个代码:
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)
但这引发了一个异常(exception):
"This row already belongs to another table."
那么如何解决这个问题呢?
[编辑] 这是我的 Form_3.XSD 文件架构: Click here to see
最佳答案
假设 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 字段。
关于c# - 将新行添加到强类型数据集中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1842144/