テンプレート コントロールがありますが、その中からイベントを発生させる際に問題があります。
私の実際のコントロールにはより多くのテンプレートがあり、もう少し複雑ですが、その本質は次のように単純です。
<MyControl>
<SomeTemplate>
<%# Container.Blabla %>
<asp:Button runat="server" id="someButton" OnClick="ClickAction" />
</SomeTemplate>
</MyControl>
すべてが正常にレンダリングされているように見えますが、その中のボタンを押してもイベント ハンドラーが起動しません (私のページのコード ビハインドに存在します)。コントロールのすぐ外側 (またはリピーター内) でボタンをテストしましたが、問題なく動作します。
これは、すべてが追加またはデータバインドされた順序に要約されると思いますが、実際には何がわかりません。これが私のコントロールの本質です:
public class SomeControl : Control, INamingContainer
{
[PersistenceMode(PersistenceMode.InnerProperty)]
[TemplateContainer(typeof(SomeTemplateContainer))]
public ITemplate SomeTemplate { get; set; }
public override ControlCollection Controls
{
get
{
EnsureChildControls();
return base.Controls;
}
}
protected override void CreateChildControls()
{
if (ChildControlsCreated)
return;
base.Controls.Clear();
// Creating template containers, instantiating in controls and adding controls
DataBind();
ChildControlsCreated = true;
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
// A bunch of stuff I know work since it operates independently of my button
}
// Some private utility methods
}
私は何が欠けているか、間違っていますか?