UC内のjQueryダイアログ内でボタンがポストバックしない
-
05-07-2019 - |
質問
ユーザーコントロールを開発しており、jQueryダイアログ内にasp.netボタンがありますが、ボタンを押しても何も起こりません。サーバー側でボタンクリックイベントを呼び出さないということです。
dlg.parent().appendTo(jQuery("form:first"));
しかし、それは私にも役立ちませんでした、asp.net UserControl内でこれを実現することは可能ですか? また、ダイアログ内でUpdatePanelを使用できるかどうか疑問に思いますか?
解決
ボタンをダイアログボタンにして、HiddenButtonのIDを持つページにasp.netボタンを配置し、 display:none;
したがって、ボタンは表示されません。 (Visible =" false"ではないため、ボタンがレンダリングされます)
ダイアログjavascriptで、非表示ボタンをクリックする効果があるボタンを追加します
jQuery("#dialog").dialog({
buttons: {
'ButtonText': function() {
//save the session
__doPostBack('<%# HiddenButton.ClientID %>', '')
jQuery(this).dialog('close');
}
}
});
非表示ボタンにASPクリックハンドラーを追加
<div style="display:none;">
<asp:Button ID="HiddenButton" OnClick="HiddenButton_Click" ></Button>
<div>
ダイアログボタンがクリックされると、サーバーサイドのClickイベントが発生します
このパターンを常に使用するのに役立つことを願っています
他のヒント
ASP.NETがフォーム内のボタンを見つけられないことと関係があるのではないかと思われます。
jQueryで.liveイベントセットアップを使用します。.liveを使用してダイアログを作成する前にイベントをバインドすると、動作するはずです...
document.ready関数で次のような結果になります。
$("#btn").live("click", function(){
// Do something
});
$("#dialog").dialog({
...
}
同じ問題がありました。私は最終的にダイアログからボタンを引き出し、cssでそれを隠し、ダイアログのcloseイベントからトリガーしました(後でもっときれいにするつもりですが、これは少なくとも問題を示しています)。