2011-04-23 3 views
0
public class Post 
{ 
    public int id { get; set; } 
    public string title { get; set; } 
    public string body { get; set; } 
    public List<Comments> comments { get; set; } 
} 

public class Comments{ 
    public int id { get; set; } 
    public string author { get; set; } 
    public string text { get; set; } 
} 

My data layer returns the data I need: 
List<Posts> post = (List<Post>)myDataLayer.GetPostAsList(); 

post has just one post in it even though it is a List. 

2 개의 리피터 컨트롤이 있습니다. 첫 번째는 posts repeater입니다. 두 번째는 게시물 중계기 외부에있는 설명 중계자입니다.바인딩하는 방법 asp.net에서 내 repeater에 목록?

게시물의 List<Comments>을 가져 와서 메모 리피터에 바인딩하려면 어떻게해야합니까?

+0

당신이 확실 게시물 리피터 :

<asp:Repeater runat="server" ID="rptPosts"> <ItemTemplate> <!-- markup for posts here--> </ItemTemplate> </asp:Repeater> <asp:Repeater runat="server" ID="rptComments"> <ItemTemplate> <!-- markup for comments here--> </ItemTemplate> </asp:Repeater> 

것은 왼쪽은 데이터 바인딩하는 것입니다? 그렇다면 어떻게 코멘트가 표시 될 것으로 기대하십니까? 나는 당신에게 수업 디자인과 관련하여, 코멘트는 포스트와 관련이 있고 보통 포스트 직후에 표시되기 때문에 묻습니다. – Alex

+1

Alex, asp.net/html의 단순함을 위해 2 개의 별도 리피터가 있습니다. 그러나 코멘트 목록이있는 게시 개체를로드합니다. – kheya

+0

자동 속성을 사용하고 있으므로 게시글에서 댓글 목록을 가져 오는 데 어려움을 겪고 있습니다. – kheya

답변

1

가장 간단한 방법 : * 외부 * 댓글 리피터가

protected override void DataBind() 
{ 
    var posts = myDataLayer.GetPostAsList(); 
    // if there is at leat one post 
    if (posts.Any()) 
    { 
     rptPosts.DataSource = posts; 
     rptPosts.DataBind(); 

     // you mentioned that there should be only one post in the list 
     var comments = posts.First().comments; 
     rptComments.DataSource = comments; 
     rptComments.DataBind(); 
    } 
} 
관련 문제