Renderメソッドで右クリックイベントハンドラーをアタッチするdivを含む複合サーバーコントロールがあります(わかりやすくするために簡略化されています)。
protected override void Render(HtmlTextWriter writer)
{
base.Render(writer);
writer.write(@"
<script type=""text/javascript"">
document.getElementById(""myDiv"").onmousedown = function(event)
{
e = FixupMouse(event);
if (e.which == 3)
// Do my stuff
}
</script>
";
}
サーバーコントロールは、aspxページの更新パネル内に配置されます。
最初のページの読み込み後はすべて問題ありませんが、updatepanelがコールバックを実行するとすぐに、イベントハンドラーが失われます。関数を変更して、関数内のコードがないことを証明するアラートを実行するようにしました。
サーバーコントロール自体は、次のように宣言されます。
public class myBase : CompositeControl, INamingContainer
なぜこれが起こっているのか、私は本当に途方に暮れています...何か手がかりはありますか?