繁体   English   中英

在强类型DataSet中添加新行?

[英]Add a new row into strongly typed DataSet?

我有以下XML文档:

<Form ID="1">
  <Persons>
    <Person Name="Mike"/>
    <Person Name="Alan"/>
  </Persons>
</Form>

我已根据.XSD文件创建了Strongly Typed DataSet文件(.XSD)和MyForm.cs文件

那么,如何向表人添加新的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)

但是这有例外:

  "This row already belongs to another table."

那么如何解决这个问题呢?

[编辑]这是我的Form_3.XSD文件架构: 点击此处查看

替代文字

假设Persons是你的类型化DataSet实例form的DataTable,我相信你正在尝试从一个DataTable(form.Person)添加一行到另一个DataTable(form.Persons)中的Row。 即使两个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字段。

最后! 有效 :)

我只需插入该行:

newPerson.Form_Id = 0;

由于这个原因,框架知道在哪里插入newPersonRow

所以,代码看起来像这样:

        Form3.Person newPerson= form.Person.NewPersonRow();
        newPerson.Name= "Tony";
        newPerson.Form_Id = 0;
        form.Person.Rows.Add(newPerson);

谢谢你们的帮助! :)

尝试使用ImportRow方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM