次のコードを使用して、ASP.NETユーザーコントロール「Box.ascx」を作成しました。
<div id="divContent" runat="server" visible='<%# AllowedToView(this.Privacy) %>'>
Content
</div>
コードビハインドでは、「Box.ascx.cs」に次のコードが含まれています。
public string Privacy = string.Empty;
public bool AllowedToView(string privacy)
{
return true;
}
このコントロールをリピーターで使用すると、AllowedToView()関数がヒットします。リピーターなしでこのコントロールを使用すると、AllowedToView()関数が呼び出されません。この奇妙な状況が発生する理由と、リピーターなしで使用した場合にコントロールにAllowedToView()関数を呼び出させる方法を知りたいです。
詳細は以下の通りです。
このコントロールは、「Default.aspx」のリピーターで使用します。
<asp:Repeater ID="rpRecords" runat="server">
<ItemTemplate>
<uc1:Box ID="myBox" runat="server" RecordID = '<%# Eval("RecordID") %>' />
</ItemTemplate>
</asp:Repeater>
リピーターは、次のコードで「Default.aspx.cs」にデータバインドされています。
DataTable dt = FillTable();
rpRecords.DataSource = dt;
rpRecords.DataBind();
次のコードで「ShowBox.aspx」の「Box.ascx」コントロールを使用します。
<body>
<uc1:Box ID="myBox" runat="server" />
</body>
次のコードを使用して、コードビハインドからユーザーコントロールに値を指定します。
protected void Page_Load(object sender, EventArgs e)
{
myBox.RecordID = "1";
}