【问题标题】:Add a new row into strongly typed DataSet?在强类型数据集中添加新行?
【发布时间】:2009-12-03 19:02:22
【问题描述】:

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

但这是一个例外:

  "This row already belongs to another table."

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

[编辑] 这是我的 Form_3.XSD 文件架构: Click here to see

【问题讨论】:

  • 没有你的.xsd,很难调试这个问题。 Form3.Persons 是否有“Person”成员(带有 Rows 成员)?
  • 托尼,我添加到我的答案中。如果没有帮助,请告诉我们。

标签: c# strongly-typed-dataset


【解决方案1】:

假设 Persons 是您键入的 DataSet 实例 form 中的一个 DataTable,我相信您正在尝试将一个 DataTable (form.Person) 中的 Row 添加到另一个 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 字段。

【讨论】:

  • Jay Riggs >> 正如您所注意到的,Persons 表没有“Name”属性,因此您的代码将无法工作。
【解决方案2】:

终于!成功了:)

我只需要插入那行:

newPerson.Form_Id = 0;

多亏了这个,框架才知道在哪里插入 newPersonRow

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

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

感谢大家的帮助! :)

【讨论】:

  • 这对我来说是救命稻草——如果可以的话,我会给你 10 个赞成票
【解决方案3】:

试试 ImportRow 方法。

【讨论】:

    猜你喜欢
    • 2011-09-12
    • 2013-02-16
    • 2010-09-15
    • 2011-07-10
    • 1970-01-01
    • 2011-06-22
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    相关资源
    最近更新 更多