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

サーバー側でメッセージ制御

分類:[ASP.NET]

いつもお世話になっています。
現在問題になっているのは、サーバー側からYES,NOメッセージを
表示させて、クライアントのYES,NOの結果で処理を継続するかしないかを
またサーバー側で判断したいのです。
自分で色々調べて
btnDel.Attributes.Add("onClick", "return confirm('削除します。よろしいですか?');")という書き方があったのですが、これだと、ボタンを押下した時にクライアント
側でメッセージが表示された後にボタンイベントが走ってしまいます。
くどいようですが、サーバー側のボタンイベント内で処理を継続するかどうか判断する旨のメッセージを表示してその結果処理を継続するかしないかをしたいのです。
また
Script = "<script language=javascript>" + "window.alert('データが存在しません。')" + "</script>"
Response.Write(Script)でメッセージをサーバー側から返せる事は解っています。
confirmをこの中に書いてやる事も出来るのは解っていますが、confirmの戻り値をサーバー側で判断しなければならないためその部分の書き方も解りません。
どなたか御教授していただけないでしょうか?
宜しくお願いします。
■No25727に返信(たかさんの記事)
> confirmをこの中に書いてやる事も出来るのは解っていますが、confirmの戻り値をサー
> バー側で判断しなければならないためその部分の書き方も解りません。

hidden コントロールに confirm の値をセットして
ポストバックしてはいかがでしょうか。

function $(elementID){
    return document.getElementById(elementID);
}

function delete(){
    $("HiddenDelete").value = confirm("削除しますか");
    $("form1").submit();
}

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Request.Form("HiddenDelete") = "true" Then
        ...
    End If
End Sub
■No25730に返信(もりおさんの記事)
> ■No25727に返信(たかさんの記事)
>>confirmをこの中に書いてやる事も出来るのは解っていますが、confirmの戻り値をサー
>>バー側で判断しなければならないためその部分の書き方も解りません。
>
> hidden コントロールに confirm の値をセットして
> ポストバックしてはいかがでしょうか。
>
> function $(elementID){
> return document.getElementById(elementID);
> }
>
> function delete(){
> $("HiddenDelete").value = confirm("削除しますか");
> $("form1").submit();
> }
>
> Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
> If Request.Form("HiddenDelete") = "true" Then
> ...
> End If
> End Sub
もりおさまありがとうございます。
説明不足で申し訳ないのですが今したい事は
更新した場合、ボタンイベント内で追加、更新を判断し、メッセージを表示したいのです。
削除の場合も同様でデータ件数が0件ではない場合、メッセージを表示したいのです。

Script = "<script language=javascript> " & _
"document.getElementById('txtTorihiki')=confirm('削除しますか'); " & _
"document.getElementById(form1).submit(); " & _
"</script>"
Response.Write(Script)
をボタンイベントの際に記述しましたが、txtTorihikiの内容もSubmitもおきない事
を確認しました。
こういった制御は無理なのでしょうか?
■No25731に返信(たかさんの記事)
> Response.Write(Script)

Response.Write を使った場合、レンダリングされる HTML の冒頭に JavaScript が出力さ
れ、JavaScript 内に記述したコントロールを参照できないためエラーになるのではない
かと思われます。

サーバー側から JavaScript を登録するには
ClientScript.Register... を使ったほうが善いです。

こんな感じです。
Dim script As String = _
    "document.getElementById('txtTorihiki').value = confirm('削除しますか');" & _
    "document.getElementById('form1').submit();"
ClientScript.RegisterStartupScript(Me.GetType(), "deleteScript", script, True)

.NET Framework クラス ライブラリ
    ClientScriptManager.RegisterStartupScript メソッド (Type, String, String, Boolean)
http://msdn.microsoft.com/ja-jp/library/z9h4dk8y.aspx

> "document.getElementById('txtTorihiki')=confirm('削除しますか'); "

エレメントそのものに bool 値をセットしようとしているため
エラーとなる可能性があります。

> "document.getElementById(form1).submit(); "

"document.getElementById('form1').submit(); "
■No25732に返信(もりおさんの記事)
> ■No25731に返信(たかさんの記事)
>>Response.Write(Script)
>
> Response.Write を使った場合、レンダリングされる HTML の冒頭に JavaScript が出力さ
> れ、JavaScript 内に記述したコントロールを参照できないためエラーになるのではない
> かと思われます。
>
> サーバー側から JavaScript を登録するには
> ClientScript.Register... を使ったほうが善いです。
>
> こんな感じです。
> Dim script As String = _
> "document.getElementById('txtTorihiki').value = confirm('削除しますか');" & _
> "document.getElementById('form1').submit();"
> ClientScript.RegisterStartupScript(Me.GetType(), "deleteScript", script, True)
>
> .NET Framework クラス ライブラリ
> ClientScriptManager.RegisterStartupScript メソッド (Type, String, String, Boolean)
> http://msdn.microsoft.com/ja-jp/library/z9h4dk8y.aspx
>
>>"document.getElementById('txtTorihiki')=confirm('削除しますか'); "
>
> エレメントそのものに bool 値をセットしようとしているため
> エラーとなる可能性があります。
>
>>"document.getElementById(form1).submit(); "
>
> "document.getElementById('form1').submit(); "

もりおさまありがとうございます。プログラムを追加し試してみましたが、
削除しますかもページロードも発生しませんでした。
ですので最初からボタンにconfirmを属性で追加する仕様でいきます。
解決はしていないのですが、現時点ではこの方法をあきらめようと
思います。また機会があれば御教授のほど宜しくお願いします。
解決済み!

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