いくつかの更新パネルを持つコントロールがあります。その後、コントロールは (非モーダル) JQueryUI ダイアログに読み込まれます。ほとんどの場合、これで問題なく動作します。コントロールのボタンを起動して、最終的に JQueryUI ダイアログの一部としてユーザーに表示されるコントロールの一部を更新できます。
問題は、物事が混ざり合ったときに発生します。私のメイン ページには、メイン ダイアログを再度開いて以前の状態を呼び出すためのリンクがあります。最終的に、これは単純な JavaScript を呼び出します。
function openDialog(id, name)
{
// Tell asp.net code behind what we're trying load
var formField = document.getElementById('<%= userControl1.idField.ClientID %>');
formField.value = id;
// Tell asp.net to refresh the contents
__doPostBack('<%= userControl1.documentUpdatePanel.ClientID %>', '');
$("#dialog-editDoc").dialog
({
width: 400,
resizable: true,
open: function ()
{
// This is impotant for ASP.NET
$(this).parent().appendTo($("form:first"));
$(this).dialog("option", "title", "Editing Document - " + name);
}
});
}
これは正常に動作しているように見えますPageLoad()
。ユーザー コントロールのコード ビハインドでイベントを取得し、コンテンツを適切に変更できます。ただし、ダイアログが表示されると、PageLoad()
.
奇妙なのは、ユーザー コントロールのボタンがクリックされ、イベントが正しく発生し、ダイアログが表示されている間に変更を加えることができることです。ダイアログが表示される前に (または表示されているときに)、「状態を変更」するのに多少の困難があるようです。
それで、誰もこれを回避する方法を知っていますか?私が試した他のこと:
__doPostBack(...)
関数への 移行open:
-- 同じ問題。
編集:
ユーザー コントロールがページに読み込まれる方法は次のとおりです (更新パネルではなく、更新パネルはドキュメント エディター コントロール内にあります)。
<div id="dialog-editDoc" class="dialogContent" title="{Context Sensitive}">
<mylib:DocEditor ID="userControl1" runat="server" />
</div>