2015-01-09 37 views
0

我有一個通用的清單顯示泛型列表數據傳回中繼的分組方式

List<StudentInfo> 

StudentInfo有

Name,Marks,Subject,Age as properties. 

我得到這個StudentInfo追溯到如列表,它正在試圖綁定到一箇中繼器。

<asp:Repeater ID="myRepeater" runat="server"> 
      <ItemTemplate>     
        <%# Eval("Name") %>     
        <%# Eval("Marks") %> 
        <%# Eval("Subject") %> 
        <%# Eval("Age") %>     
      </ItemTemplate> 
     </asp:Repeater> 

輸出我得到:

John Smith 
85 
English 
12 
John Doe 
78 
English 
12 
Mary Ann 
72 
Chemistry 
14 

預計在轉發數據綁定的結果是 - 數據應每科

English 

John Smith 
85 
12 
John Doe 
78 
12 


Chemistry 

Mary Ann 
72 
14 

我嘗試使用嵌套的轉發器顯示屏,但沒有得到預期的結果。當下面的代碼是

   myParent.DataSource = listOfStudentInfo; 

       myParent.DataBind(); 

如何讓子代中繼器顯示剩下的代碼?

<asp:Repeater ID="myParent" runat="server"> 
      <ItemTemplate>    
         <%# Eval("Subject") %>     
       <asp:Repeater runat="server" ID="myChild"> 
       <ItemTemplate>    
         <%# Eval("Name") %> 
         <%# Eval("Marks") %> 
         <%# Eval("Age") %> 
        </ItemTemplate> 
       </asp:Repeater> 
       </ItemTemplate> 
</asp:Repeater> 

回答

1

改變你的數據源模型有StudentInfo對象這樣的enumerable

public class Model{ 
    public string Subject {get; set;} 
    public IEnumerable<StudentInfo> StudentInfo {get; set;} 
} 

那麼你的父母中繼器具有學科屬性和嵌套的中繼器具有StudentInfo作爲數據源,

<asp:Repeater ID="myParent" runat="server"> 
      <ItemTemplate>    
         <%# Eval("Subject") %>     
       <asp:Repeater runat="server" ID="myChild" DataSource='<%# Eval("StudentInfo ") %>'> 
       <ItemTemplate>    
         <%# Eval("Name") %> 
         <%# Eval("Marks") %> 
         <%# Eval("Age") %> 
        </ItemTemplate> 
       </asp:Repeater> 
       </ItemTemplate> 
</asp:Repeater> 

而且您的父母數據源是這樣的,

   myParent.DataSource = listOfModel;  
       myParent.DataBind();