ここから本文です

ASP.NETで確認メッセージを表示させたいです。

sakura_hinanoさん

2009/12/2111:19:45

ASP.NETで確認メッセージを表示させたいです。

ASP.NETを使用しているのですが、下記の処理ができません。
新人なもので理解不足が多いと思いますが、ご教授願います。

<処理内容>
チェックボックスがチェックされているものに対しての削除処理です。
--基本の流れ--
削除ボタンが押されたら、確認メッセージを表示させ
「はい」の場合は処理を行うという流れなのですが・・・

現段階では
btnDel.Attributes["onclick"] = "return confirm('本当に削除しますか?');";
という処理を記述しているのですが・・・
チェックボックスがチェックされている場合のみに、確認メッセージを表示させることは可能でしょうか?

※チェックボックスがチェックされているかの処理は、削除ボタン押下時のイベントで行っていますが
そのチェックをする前に確認メッセージが表示されてしまいます。

補足ご回答ありがとうございます!!

申し訳ないのですが、JavaScriptについて基本的に理解不足でして・・・
ASPで使う場合に参照を追加するなどしないと使えないのでしょうか・・・?
JavaScriptの定義はページロード時に行うのか、一つのメソッド扱いなのかもわかっていません;;
根本的な理解不足ですみません。
できたらもう少し
document.getElementById(checkBoxID)
などで何をしているか教えていただけると嬉しいです。

閲覧数:
5,953
回答数:
1

違反報告

ベストアンサーに選ばれた回答

ttkai00さん

編集あり2009/12/2113:34:08

onclick の中を confirm ではなく、JavaScript の関数にして、その関数内で、チェックボックスがチェックされていなければ無条件に true を返し、チェックボックスがチェックされていれば confirm の結果を返すようにします。

チェックボックスが ASP.NET のコントロールだとすると、クライアントスクリプトからアクセスするには、 ClientID が必要になります。ですからこれを JavaScript 関数の引数として渡せばよいと思います。

例えば CheckBox1 が対象のチェックボックスとすると、onclick を設定する部分は以下のようになります。

btnDel.Attributes["onclick"] = String.Format("return confirmButtonClicked({0});", CheckBox1.ClientID);

JavaScript 関数は以下のように定義します。

function confirmButtonClicked(checkBoxID) {
var cb = document.getElementById(checkBoxID);
if (cb.checked) {
return confirm('本当に削除しますか?');
} else {
return true;
}
}

※補足を受けて

> 参照を追加するなどしないと使えないのでしょうか・・・?

全くそんなことはありません。JavaScript はブラウザのみで動作します。

aspx ファイルに、<head>…</head> という部分があると思います。JavaScript の関数はここで script ブロックを作って定義します。

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">

<script type="text/javascript">
function confirmButtonClicked(checkBoxID) {
var cb = document.getElementById(checkBoxID);
if (cb.checked) {
return confirm('本当に削除しますか?');
} else {
return true;
}
}
</script>

</head>

JavaScript から各コントロールにアクセスするには ID 値が必要になります。HTML 上で

<input type="checkbox" id="c1" />

というタグで表されるチェックボックスの場合、document.getElementById("c1") とすれば、そのチェックボックスオブジェクトを取得できます。チェック状態を調べたいのであれば、

var cb = document.getElementById("c1");
if (cb.checked) {

}

のように書けます。document.getElementById によって、ページから c1 という id を持つオブジェクトを探し、それを cb という変数に代入しているわけです。

しかし、ASP.NET のサーバーコントロールの場合は、ASP.NET がタグを生成しますから、実行時に id が何になるかは、ASP.NET によって決められます。したがって上記の c1 のように決め打ちにはできないのです。

そこで、ASP.NET 側のコードで、CheckBox の ClientID プロパティによってこの ID を取得することができますので、これを ASP.NET から JavaScript への引数として渡すわけです。

それが

> btnDel.Attributes["onclick"] = String.Format("return confirmButtonClicked({0});", CheckBox1.ClientID);

この行の意味です。

これでも理解できないようでしたら、JavaScript をしっかりと、学習された方がよいと思います。Web アプリケーションを作るなら、JavaScript は避けて通れません。

質問した人からのコメント

2009/12/21 14:32:40

ご丁寧に説明していただきありがとうございました。
細かく説明していただけて大分理解できたと思います。
もしお時間ありましたら、もう少しお聞きしたいことがありますので
新しい質問の方で教えていただけると助かります;;

ちょい足しを取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

ID/ニックネームを選択し、「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。

ほかのID/ニックネームで利用登録する