申し訳ありませんが、別の回答として追加する必要がありました。フォルダー ユーザー コントロールの簡単なサンプルを次に示します。
あなたのコントロールを作成してください...フォーマットは好きなようにします。
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="FolderButton.ascx.cs" Inherits="FolderButton" %>
<div>
<asp:ImageButton ID="btnImage" runat="server" ImageUrl="yourfolder.jpg" />
<asp:LinkButton ID="btnTitle" runat="server" />
</div>
プロパティとクリック イベントをコード ビハインドに追加します (画像とリンク ボタンがクリックされたときにクリック イベントを発生させることを忘れないでください)。
public partial class FolderButton : System.Web.UI.UserControl
{
public int DatabaseId { get; set; }
public string Name { get; set;} // you can even set your linkbutton text here.
public event EventHandler Click;
}
FolderButton コントロールのリピーターを作成します。
<asp:Repeater ID="rptFolders" runat="server" OnItemDataBound="rptFolders_ItemDataBound">
<ItemTemplate>
<uc1:FolderButton ID="FolderButton1" runat="server" />
</ItemTemplate>
</asp:Repeater>
DataBinding にフォルダー ID を設定します。
protected void rptFolders_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Book book = (Book)e.Item.DataItem; //Or whatever your passing
FolderButton btnFolder = e.Item.FindControls("FolderButton1");
btnFolder.Name=book.Name;
btnFolder.DatabaseId=book.Id;
btnFolder.Click += new EventHandler(FolderClicked);
}
}
最後に、イベントをクリックして好きなことをすることができます:
void FolderClicked(object sender, EventArgs e)
{
int id = ((FolderButton)sender).DatabaseId;
/// Do something with your Id
}
不明な点があればお知らせください。これはフリーハンドの簡単なサンプルなので、タイプミスや悪い慣行を許してください...コードはデモストレーションのみを目的としています。