你正在創建一個用戶控件來表示一個「塊」的正確軌道,但你缺乏的是一個機制,以顯示他們作爲一個列表。
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控件爲您提供了機制根據您的數據顯示可變數量的這些用戶控件。
非常歡迎。 – Amy 2011-02-16 09:23:23