2011-10-12 30 views
3

我有一個C#中的對象列表我試圖綁定到一個Repeater。這裏是我的類的簡單的例子:ASP.NET中繼器 - 顯示屬性列表<T1> Databound List <T>

public class LineDetail 
{ 
    public int ClassID { get; set; } 
    public IPerson Teacher { get; set; } 
    public IList<IPerson> Students { get; set; } 
    public string ClassTitle { get; set; } 
    public DateTime StartTime { get; set; } 
    public DateTime EndTime { get; set; } 
} 

已經被混淆的部分是學生財產。當然,我在我的列表綁定到中繼器:

LineItems.Sort((x, y) => DateTime.Compare(x.StartTime, y.StartTime)); 
ResultsPanel.Visible = true; 
Schedule.DataSource = Meetings; 
Schedule.DataBind(); 

而且我宣佈我的中繼器:

<asp:Repeater ID="Schedule" runat="server"> 
    <HeaderTemplate> 
     <table width="650" border="1" bordercolor="#222222"> 
      <tr> 
       <td> Time </td> 
       <td> Teacher </td> 
       <td> Class Title </td> 
       <td> Students </td> 
      </tr> 
    </HeaderTemplate> 
    <ItemTemplate> 
     <tr> 
      <td> 
       <%# Convert.ToDateTime(DataBinder.Eval(Container.DataItem, "StartTime")).ToString("h:mm")%> 
       - 
       <%# Convert.ToDateTime(DataBinder.Eval(Container.DataItem, "EndTime")).ToString("h:mm")%> 
      </td> 
      <td> <%# DataBinder.Eval(Container.DataItem, "Teacher").ToString() %> </td> 
      <td> <%# DataBinder.Eval(Container.DataItem, "ClassTitle")%> </td> 
      <td> <%# DataBinder.Eval(Container.DataItem, "Students")%> </td> 
     </tr> 
    </ItemTemplate> 
    <FooterTemplate></table></FooterTemplate> 
</asp:Repeater> 

但我不知道如何(或者如果它甚至有可能)輸出的學生名單屬性。我嘗試了一個嵌套的中繼器,但那沒有奏效。我不相信它是編譯後的語法相關的。

我內心的中繼器是:

<td> 
    <asp:Repeater id="ParliamentarianRepeater" runat="server"> 
     <HeaderTemplate><ul></HeaderTemplate> 
     <ItemTemplate> 
      <li> 
       <%# DataBinder.Eval(Container.DataItem, "Students.Firstname") %> 
      </li> 
     </ItemTemplate> 
     <FooterTemplate></ul></FooterTemplate> 
    </asp:Repeater> 
</td> 

我不知道如何來完成我需要做的。

你能指點我正確的方向嗎?我願意以其他方式將這些數據很好地展現出來。提前致謝!

回答

4

必須設置爲內部Repeater

你內心的中繼器代碼的數據源應該是這樣的

<td><asp:Repeater id="ParliamentarianRepeater" runat="server" DataSource='<%# DataBinder.Eval(Container.DataItem, "Students")%>'> 
<HeaderTemplate><ul></HeaderTemplate> 
<FooterTemplate></ul></FooterTemplate> 
<ItemTemplate> 
<li> 
<%# DataBinder.Eval(Container.DataItem, "Firstname") %> 
</li> 
</ItemTemplate> 
</asp:Repeater> 
</td> 

內中繼器必須是從父母的直放站「的ItemTemplate」標籤內。

希望這有助於

+0

感謝奧古斯丁 - 出於某種原因,我在想,內轉發就能夠直觀地確定數據源。 – splatto

+0

不客氣,我很樂意幫助你。 –