在强类型数据集中添加新行?
Posted
技术标签:
【中文标题】在强类型数据集中添加新行?【英文标题】: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 成员)? 托尼,我添加到我的答案中。如果没有帮助,请告诉我们。 【参考方案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 方法。
【讨论】:
以上是关于在强类型数据集中添加新行?的主要内容,如果未能解决你的问题,请参考以下文章