<BusinessList>
<Company>
<CompanyName>StackOverflow</CompanyName>
<Desc>FAQ Q & A Site</Desc>
<Email>[email protected]</Email>
<Mobile>123456</Mobile>
<Phone>123456</Phone>
<City>florida</City>
<ZipCode>620020</ZipCode>
<Country>USA</Country>
<State>FL</State>
<Image>a.png</Image>
</Company>
<Staff>
<FirstName>A</FirstName>
<Qualification>Bachelor in Engineering</Qualification>
<Stories>Highly enthusiastic and energetic programmer will surely work with him again - Jane</Stories>
<Designation>Chief Engineer</Designation>
<Email>[email protected]</Email>
<ContactNo>123456</ContactNo>
<Fax>56565656</Fax>
<Image>1.png</Image>
</Staff>
<Staff>
<FirstName>B</FirstName>
<Qualification>Bachelor in Engineering</Qualification>
<Stories>Highly enthusiastic and energetic programmer will surely work with him again - Jane</Stories>
<Designation>Team Leader</Designation>
<Email>[email protected]</Email>
<ContactNo>123456</ContactNo>
<Fax>5757575</Fax>
<Image>2.png</Image>
</Staff>
<Staff>
<FirstName>C</FirstName>
<Qualification>Bachelor in Engineering</Qualification>
<Stories>Highly enthusiastic and energetic programmer will surely work with him again - Jane</Stories>
<Designation>Programmer</Designation>
<Email>[email protected]</Email>
<ContactNo>123456</ContactNo>
<Fax>565656</Fax>
<Image>3.png</Image>
</Staff>
<Staff>
<FirstName>D</FirstName>
<Qualification>Bachelor in Engineering</Qualification>
<Stories>Highly enthusiastic and energetic programmer will surely work with him again - Jane</Stories>
<Designation>Developer</Designation>
<Email>[email protected]</Email>
<ContactNo>123456</ContactNo>
<Fax>1231231234</Fax>
<Image>4.png</Image>
</Staff>
</BusinessList>
上面是我的数据集的 xml 输入文件,我使用
DataSet.ReadXml()
方法读取该文件。但是,当我使用如下所示的嵌套转发器进行数据绑定时,出现错误。
<asp:Repeater runat="server" id="rptrCompany">
<HeaderTemplate>
Staff in company
</HeaderTemplate>
<ItemTemplate>
Company Details:
<%# Eval("CompanyName") %>
.. blahblahblah Staff Details
<asp:Repeater runat="server" id="rptrStaff" datasource='<%# ((DataRowView)Container.DataItem).CreateChildView("BusinessList_Staff") %>'>
<HeaderTemplate>
Staff List
</HeaderTemplate>
<ItemTemplate>
<%# Eval("FirstName") %>
..blah blah blah
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
blah blah blah 部分表示我数据绑定的额外字段。在子中继器中,我收到错误/异常
The relation is not parented to the table to which this DataView points.
我做错了什么,当我检查数据集时,关系名称“BusinessList_Staff”存在[关系是由框架自动为我创建的]。另外 Container.Dataitem
是一个 datarowview
,它也有在标记中使用的“CreateChildView”方法。我所做的就是在后端 pageLoad 中 DataBind 父中继器,如下所示
rptrCompany.DataSource = dtTemp.Tables["Company"].DefaultView;
rptrCompany.DataBind();
请让我知道我做错了什么
难道是因为员工不是公司的? XML 中可能存在的唯一关系是通过公司后面与公司的隐式关系。
如果您可以控制 XML 生成,则应将
<Staff>
元素更改为包含在 <Company>
中。
很长一段时间没有以这种方式进行数据绑定了,如果这不是一个完整的解决方案,那么很抱歉。
我认为问题是因为你的数据集结构是扁平的。这种中继器结构需要有公司实体中的员工名单。 xml 应该如下所示:
<BusinessList>
<Company>
<!--Other Properties-->
<Staffs>
<!--Staff List-->
<Staff>
</Staff>
<Staff>
</Staff>
</Staffs>
</Company>
</BusinessList>
我花了几个小时才弄清楚关系的名称很重要:两个节点名称用下划线分隔。我已经多次读到该关系是自动创建的,所以我不介意。