<%@ Register Src="~/Controls/PressFileDownload.ascx" TagName="pfd" TagPrefix="uc1" %>
<asp:Repeater id="Repeater1" runat="Server" OnItemDataBound="RPTLayer_OnItemDataBound">
<ItemTemplate>
<asp:Label ID="LBLHeader" Runat="server" Visible="false"></asp:Label>
<asp:Image ID="IMGThumb" Runat="server" Visible="false"></asp:Image>
<asp:Label ID="LBLBody" Runat="server" class="layerBody"></asp:Label>
<uc1:pfd ID="pfd1" runat="server" ShowContainerName="false" ParentContentTypeId="55" />
<asp:Literal ID="litLayerLinks" runat="server"></asp:Literal>
</ItemTemplate>
</asp:Repeater>
System.Web.UI.WebControls.Label lbl;
System.Web.UI.WebControls.Literal lit;
System.Web.UI.WebControls.Image img;
System.Web.UI.WebControls.HyperLink hl;
System.Web.UI.UserControl uc;
リピーター内にリストされている uc1:pdf の ParentItemID 変数を設定する必要があります。e.Item を調べて何らかの方法で設定することで、 uc を見つけることができるはずだと思いました。これは私が何かが欠けている部分だと思います。
uc = (UserControl)e.Item.FindControl("pfd1");
if (uc != null) { uc.Attributes["ParentItemID"] = i.ItemID.ToString(); }
任意の考えをいただければ幸いです。
これも同様の結果で試しました...ユーザーコントロール(pfd1)内でデバッグすると、設定しようとしているパラメーターが設定されていません。
uc = (UserControl)e.Item.FindControl("pfd1");
if (uc != null)
{
uc.Attributes.Add("ContainerID", _cid.ToString());
uc.Attributes.Add("ParentItemId", i.ItemID.ToString());
}
更新: コントロールが名前空間によって接続されていないようです。親コントロール (レイヤー) と PressFileDownlad コントロールを名前空間 "MyControls" でラップしました。また、aspx の Inherits リファレンスを更新して、"MyControls.xxxxx" を読みました。layer.aspx.cs のコード内に「MyControls.Layer」と入力できますが、「MyControls.PressFileDownload」を取得できません。