Отношение не связано с таблицей, на которую указывает это DataView - PullRequest
1 голос
/ 04 апреля 2011
<BusinessList>
  <Company>
    <CompanyName>StackOverflow</CompanyName>
    <Desc>FAQ Q & A Site</Desc>
    <Email>dummy@dummy.com</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>dummy@dummy.com</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>dummy@dummy.com</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>dummy@dummy.com</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>dummy@dummy.com</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>

бла-бла-бла, часть, обозначенная как дополнительные поля, которые я нашел. В дочернем репитере я получаю ошибку / исключение The relation is not parented to the table to which this DataView points. Что я делаю не так, имя отношения "BusinessList_Staff" существует, когда я проверил набор данных [отношение автоматически создается фреймворком для меня]. Также Container.Dataitem - это datarowview, в котором также есть метод CreateChildView, используемый в разметке. Все, что я делаю, это DataBind родительского повторителя в backend pageLoad, как показано ниже rptrCompany.DataSource = dtTemp.Tables["Company"].DefaultView; rptrCompany.DataBind();

Пожалуйста, дайте мне знать, что я делаю не так

Ответы [ 2 ]

1 голос
/ 04 апреля 2011

Я думаю, что проблема в том, что ваша структура набора данных плоская. эта структура ретранслятора должна иметь список сотрудников в компании. XML должен выглядеть так:

<BusinessList>
  <Company>
    <!--Other Properties-->
    <Staffs>
      <!--Staff List-->
      <Staff>
      </Staff>
      <Staff>
      </Staff>
    </Staffs>
  </Company>
</BusinessList>
1 голос
/ 04 апреля 2011

Может быть потому, что сотрудники не являются частью Компании?Единственное отношение, которое может существовать в вашем XML, - это неявное отношение к Компании, если она следует за компанией.

Если у вас есть контроль над генерацией XML, вы должны изменить элементы <Staff>, содержащиеся в <Company>.

Давно не привязывал данные таким образом, поэтому извините, если это не полное решение.

...