2011-02-16 6 views
5

이것은 실제로 질문이 아니므로 해고하지 않기를 바랍니다! 그래서 타임 라인과 같은 트위터를 만들어야합니다. 정보가 들어있는 블록이 겹쳐 있습니다.ASP.NET WebForms에서 사용자 컨트롤 목록을 표시하는 방법

정말이 .. 문제를 만드는 방법을 모른다는 .. 블록의 수가마다 동일하지 않습니다 때로는 만, 때로는이 때로는 더 1 개 블록 될 것입니다

입니다 그래서 직접 HTML을 작성하는 몇 가지 HtmlWriter를 만들 수 있습니까? 나는 asp.net에서 꽤 새로운 것이므로 아마 더 쉽게 할 수있다. WebUserControl을 사용하면 아마도 블록 = a wuc이므로 필요한 wuc 수를 더할 수 있습니다. 나는 이미 길을 잃어 버렸습니다. 누군가 이미 이런 종류의 작업을 수행했기 때문에 올바른 방법으로 저를 넣을 수 있습니다.

읽어 주셔서 감사합니다!

+1

여러분을 진심으로 환영합니다. – Amy

답변

10

"블록"을 나타 내기 위해 사용자 정의 컨트롤을 만들면서 올바른 길을 걷고 있지만, 부족한 부분은 목록으로 표시하는 메커니즘입니다.

ASP.NET에는 여러 가지 가능한 솔루션이 있지만 가장 간단한 방법은 ListView 컨트롤을 사용하는 것입니다.

그것은 당신의 데이터가 어떻게 생겼는지 알지 못하고 예제 코드를 제공하지만, 이제 당신은 클래스가 Block라고 가정 해 보자 어렵다 : 현실을 부르 자, 당신은 사용자 컨트롤을 만들 것

public class Block 
{ 
    public string Title {get; set;} 
    public string Text { get; set; } 
} 

을 하나 개의 블록을 표시하려면 BlockControl :

마크 업 :

<div style="margin:10px; padding:10px; background:#eee;"> 
    <h2><%= Block.Title %></h2> 
    <%= Block.Text %> 
</div> 

코드 숨김

,536,
public partial class BlockControl : System.Web.UI.UserControl 
{ 
    //Note the public property, we'll use this to data bind the ListView's item to the user control 
    public Block Block { get; set; } 

    protected void Page_Load(object sender, EventArgs e) 
    { 
    } 
} 

그런 다음 .aspx 페이지에서 ASP.NET ListView 컨트롤을 선언하고 ListView의 ItemTemplate에서 BlockControl을 사용하여 데이터를 표시 할 수 있습니다. ListView의 현재 데이터 항목을 BlockControl.Block 속성에 바인딩하는 방법에 유의하십시오.

<asp:ListView ID="BlockList" runat="server"> 
    <ItemTemplate> 
     <uc:BlockControl Block="<%# Container.DataItem %>" runat="server" /> 
    </ItemTemplate> 
</asp:ListView>    

.aspx 코드 숨김에서 ListView 데이터 원본을 설정합니다. 귀하의 경우에는 데이터가 아마 데이터베이스에서 제공하지만, 여기에 단지 몇 가지 모의 데이터의 :

protected void Page_Load(object sender, EventArgs e) 
{ 
    List<Block> blocks = new List<Block> 
    { 
     new Block { Title = "Block1", Text="This is the block 1 content"}, 
     new Block { Title = "Block2", Text="This is the block 2 content"} 
    }; 

    this.BlockList.DataSource = blocks; 
    this.BlockList.DataBind(); 
} 

이제 사용자 컨트롤에 캡슐화 단일 블록의 프리젠 테이션을하고있는 ListView는 메커니즘을 제공합니다 데이터를 기반으로 다양한 사용자 컨트롤을 표시하십시오.

+0

도움이되는 설명에 감사드립니다. – bAN

+0

대단하군요. 감사! – xeon

관련 문제