ModalPopupのOkButtonがASP.NET AJAXでクリックされたときにポストバックを作成する
-
03-07-2019 - |
質問
Atlas:を使用して確認を作成する例に従ってくださいModalPopup Extender を使用して、ModalPopupのOkButtonがクリックされたときにポストバックを作成します(ASP.NET Ajax Control Toolkitに付属のModalPopupExtenderを使用します)が、ご覧のとおり、Sys.WebForms.PostBackAction()はASP.NET AJAXには存在しません(例はAtlas用です)。実行すると" Microsoft JScript runtime error:Object expected" PostBackActionを作成するjavascriptの行にエラーメッセージが表示されます。これをASP.NET AJAXで動作させるにはどうすればよいですか、または別の方法がありますか?ありがとう
解決
ConfirmButtonExtender の使用を検討しましたか?モーダルの「キラキラ」を取得します。エクステンダーを使用して、必要なPostBack処理を行います。
ボタンクリックイベントを通常通り処理しますが、確認エクステンダーは「インターセプト」します;処理を行い、ユーザーがアクションを確認した場合に処理を続行できるようにします。
他のヒント
サーバー側イベントはModalPopupExtenderで機能します。必要なのは、表示スタイルをnoneに設定したボタンを作成することです。次に、ModalPopupExtenderのTargetControlIDプロパティを非表示ボタンIDに設定します。
<asp:Button ID="btnShowModal" runat="server" Text="Show" OnClick="btnShowModal_Click" />
<asp:Button ID="btnHidden" runat="server" Style="display: none" />
<ajaxControlToolkit:ModalPopupExtender ID="modalExtender" runat="server"
TargetControlID="btnHidden" PopupControlID="divId" />
OnClickハンドラーでモーダルを表示:
modalExtender.Show();
モーダル(通常はボタン)を閉じるコントロールのハンドラーで、モーダルを非表示にします。
modalExtender.Hide();
ポストバック中にデータベースからの情報をモーダルのコントロールに入力するために、サーバーにポストバックするためにこのメソッドを正常に使用できます。チャンピオンのように機能します。
ModalPopupExtenderを正しく覚えていれば、ボタンIDとして設定したOKControlIDがあります。
「onclick」でボタンを割り当てるだけではありませんか?ポストバックを呼び出すクライアント側ハンドラー
たとえば、次のようなもの:
myModalPopupExtender.OkButtonID = myOKButton.ID;
string script = ClientScriptManager.GetPostBackEventReference(myOKButton, myOKButton.ID);
myOKButton.Attributes.Add("onclick", script);
パネルに非表示ボタンを配置し、OkButtonとして設定できます。パネルに実際のボタンを追加し、OnClickイベントハンドラーを追加します。以下のコードを参照してください:
<cc1:ModalPopupExtender
TargetControlID="btnSubmit"
DropShadow="true"
OkControlID="btnOK"
CancelControlID="btnDecline"
PopupControlID="pnlTermsAndConditions"
BackgroundCssClass="popup"
ID="ModalPopupExtender1"
runat="server">
</cc1:ModalPopupExtender>
<asp:Panel ID="pnlTermsAndConditions" runat="server">
<table width="500" cellpadding="6" cellspacing="0" border="0" bgcolor="white">
<tr>
<td><b>Tables and Content</b></td>
</tr>
<tr>
<td><asp:TextBox ID="TermsAndCondition" runat="server" TextMode="MultiLine" Rows="10" Columns="60">
This is my terms and condoition
</asp:TextBox></td>
</tr>
<tr>
<td align="center">
<asp:Button ID="btnAccept" runat="server" CssClass="btn" Text=" Accept " OnClick="btnAccept_Click" />
<asp:Button ID="btnDecline" runat="server" CssClass="btn" Text=" Decline " />
<asp:Button ID="btnOK" style="display:none;visible:false;" runat="server" CssClass="btn" Text=" OK " />
</td>
</tr>
</table>
</asp:Panel>
これは私が探していた解決策です。素晴らしい投稿。ちなみに、モックOKボタンを作成する必要はありません。 Modal Popup Extensionの定義にオプションのOKbuttonパラメーターを含めないでください。
サーバー側のOnClickイベントをボタンに追加するだけですか?これにより、フォーム全体がポストバックされます。 または、htmlからメインフォーム($ find( 'myFormName')または何か)を取得し、それに対して.submit()を実行できます。