2011-02-16 51 views
5

這不是一個真正的問題,所以我希望不要被解僱! 因此,我必須製作一個像時間軸一樣的twitter,這是一個包含信息的塊的疊加。如何顯示ASP.NET WebForms中的用戶控件列表

我真的不知道如何使這個..問題是塊的數量是不一樣的,每次,有時它會是1塊而已,有時是兩個或有時更多..

那麼我可以讓一些HtmlWriter直接寫html嗎?我在asp.net中很新,所以也許可以更輕鬆地做到這一點!隨着WebUserControl也許,一個塊=一個wuc,所以我可以添加我需要的wuc的數量..我很迷茫,所以也許有人已經做了這種事情,並可以讓我在正確的方式..

感謝您的閱讀!

+1

非常歡迎。 – Amy 2011-02-16 09:23:23

回答

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> 

代碼隱藏:

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 2011-02-16 09:53:39

相關問題