Asp.net 该关系不是此DataView指向的表的父级

Asp.net 该关系不是此DataView指向的表的父级,asp.net,data-binding,user-controls,repeater,Asp.net,Data Binding,User Controls,Repeater,废话废话部分表示我数据绑定的额外字段。在子中继器中,我得到错误/异常该关系不是此DataView指向的表的父级。 我做错了什么,当我检查数据集时,关系名“BusinessList_Staff”存在[关系由framework为我自动创建]。还有Container.Dataitem是一个datarowview,它在标记中也使用了“CreateChildView”方法。我所做的就是在后端页面加载中对父中继器进行数据绑定,如下所示 rptrCompany.DataSource=dtTemp.Tables

废话废话部分表示我数据绑定的额外字段。在子中继器中,我得到错误/异常
该关系不是此DataView指向的表的父级。
我做错了什么,当我检查数据集时,关系名“BusinessList_Staff”存在[关系由framework为我自动创建]。还有
Container.Dataitem
是一个
datarowview
,它在标记中也使用了“CreateChildView”方法。我所做的就是在后端页面加载中对父中继器进行数据绑定,如下所示
rptrCompany.DataSource=dtTemp.Tables[“Company”].DefaultView;
rptrCompany.DataBind();


请让我知道我做错了什么

可能是因为员工不是公司的一部分吗?XML中唯一可能存在的关系是以公司为单位的隐式关系

如果您可以控制XML生成,则应该更改
中包含的
元素


很久没有以这种方式进行数据绑定了,如果这不是一个完整的解决方案,那么很抱歉。

我认为问题在于您的数据集结构是扁平的。这种中继器结构需要有公司实体中的员工列表。xml应该如下所示:

                        <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>


我在您导出的xml中看不到任何关系。@Farzin您的意思是
BusinessList\u Staff
我在标记中所指的关系?请尝试dataset read cml方法,然后重试。在这种情况下是否需要存在关系?我的意思是,商业清单、公司和员工是有关联的。这就是为什么我试着把员工作为关系人,你真是个天才。我按照你的建议做了,解决了这个问题。员工元素现在嵌套在公司内部。谢谢guvante建议我将员工元素作为公司的孩子,这解决了我的问题。尽管投票通过了,但还是感谢你提供的细节。
                        <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>
<BusinessList>
  <Company>
    <!--Other Properties-->
    <Staffs>
      <!--Staff List-->
      <Staff>
      </Staff>
      <Staff>
      </Staff>
    </Staffs>
  </Company>
</BusinessList>