DOBON.NET DOBON.NETプログラミング掲示板過去ログ

サーバーサイドでのチェック後、メッセージを表示してから再度ポストバックする方法

環境/言語:[VB.Net .NetFramework2.0]
分類:[ASP.NET]

ボタンイベント(Handles button.click)の中で、サーバーサイドチェックを
行っています。
このエラーチェックを通過した時に、一度クライアントへ確認メッセージを
表示し、「OK」ボタンが押されたときに、実際の処理を実行しようと
考えております。


エラーチェック後のメッセージ表示はClientScriptManagerのIsStartupScriptRegisteredメソッドを
利用しています。
しかし、JavaScriptのconfirmダイアログ表示まではできるのですが、
その後「OK」ボタンが押された時にポストバックする方法がわからないでいます。

button.Attributesでは、最初にクライアントサイドでチェックできますが、
サーバーサイドでしかチェックできない内容です。
また、確認メッセージも可能であるなら画面内のラベル表示等を利用せずに
JavaScriptのconfirmを利用できればと思っています。

何かよい方法はないでしょうか。ご教授宜しくお願いいたします。
■No21892に返信(celestiaさんの記事)

「Confim ポストバック」で検索しました。
ASPはよく分からないので、ここらへんかと推測

[ASP.NET]クライアントからサーバーにイベントを送信する方法
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=23286&forum=7
>
> [ASP.NET]クライアントからサーバーにイベントを送信する方法
> http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=23286&forum=7


ありがとうございます。
Page_Load処理にて実装しないといけないので、考慮に入れつつ他の方法でも
処理することができました。
要件に応じて使い分けたいと思います。


※ボタン(btnExec)は非表示
※テキストボックスtxtParamは非表示

■下記にて、確認ダイアログを発生させ、OKであればボタンクリックイベントを発生させることができる。


Dim csMgr As ClientScriptManager = Me.Page.ClientScript
If Not csMgr.IsStartupScriptRegistered("fncExec") Then
 Dim st As New StringBuilder
 st.Append(vbCrLf)
 st.Append("if (window.confirm('実行してもよろしいですか?')) {" & vbCrLf)
 st.Append(" " & ClientScript.GetPostBackEventReference(New PostBackOptions(Me.btnExec)).ToString & vbCrLf)
 st.Append("} else {" & vbCrLf)
 '実行しない場合は、パラメータをクリアしておく
 st.Append(" document.getElementById('" & txtParam.UniqueID.Replace("$", "_") & "').value = '';" & vbCrLf)
 st.Append("}" & vbCrLf)
 csMgr.RegisterStartupScript(Me.GetType(), "fncExec", st.ToString(), True)
 '実行時に与えるパラメータを設定
 txtParam.Text = EventValue
End If


■ボタンクリックイベント内でのパラメータ取得方法
Request.Form(txtParam.UniqueID)
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板