c# - 将新行添加到强类型数据集中?

标签 c# strongly-typed-dataset

我有以下 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

alt text

最佳答案

假设 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/

相关文章:

c# - 我可以在 Visual Studio 中自定义自动事件处理程序生成吗?

.net - 强类型数据集中子查询的计算

c# - 从强类型数据集中返回一行

c# - 如何重构测试应用?

sql-server - 如何从 MS Access 迁移到 SQL Server 2005?

tsql - 为什么我的类型化数据集不像临时表?

c# - 设置在强类型数据集 TableAdapter 中使用的 CommandTimeout?

C#,如何在foreach循环期间生成新的html Div?

c# - 我如何告诉 VS 2008 停止在我的文件前面放置字节顺序标记?

javascript - 数据表 JavaScript 不起作用