- ベストアンサー
ASP.NETでMsgBoxを表示したい!悩んでいる初心者のための解説
- MsgBoxをASP.NETで表示したい初心者が困っていませんか?この記事では、ASP.NETでMessageBoxを表示する方法を解説します。
- VWD2008を使用している場合、aspxに配置したボタンのプロパティにはAttributesという項目が存在しませんが、どうすればよいのでしょうか?
- 解決策は、ページのロードイベント内でボタンに対してAttributesをセットする方法です。ユーザーのクリック時に確認メッセージを表示するには、Button.Attributes["onclick"]に確認メッセージを設定します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
補足お疲れ様です。やりたい事はわかりました。 いろいろ実現方法がありますが、お好みでどうぞです。 ※1.[画面.aspx]だけで済ます場合 --[画面.aspx]-- <asp:Button ID="Button1" runat="server" Text="Button1" OnClientClick="return MoveQuestion();" /> <asp:CheckBox ID="CheckBox1" runat="server" /> <script type="text/javascript"> function MoveQuestion() { //チェックボックス var chk = document.getElementById('<%= CheckBox1.ClientID %>'); //チェックされていたら問合せ if (chk.checked) return confirm('移動?'); } </script> ※2.[画面.aspx]+[画面.aspx.vb]で制御する場合 --[画面.aspx]-- <asp:Button ID="Button1" runat="server" Text="Button1"/> <asp:CheckBox ID="CheckBox1" runat="server" /> --[画面.aspx.vb]-- Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If (Not IsPostBack) Then '※1のJavaScriptを、ボタンのクリックイベントに埋め込む例 Me.Button1.OnClientClick = String.Format("if (document.getElementById('{0}').checked) return confirm('移動?');", Me.CheckBox1.ClientID) End If End Sub ※3.[画面.aspx.vb]で制御する場合 --[画面.aspx]-- <asp:Button ID="Button1" runat="server" Text="Button1"/> <asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="True" /> ←AutoPostBack属性を追加しているので、チェックボックスが更新されるたびにサーバにポストされる --[画面.aspx.vb]-- Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender 'PreRender時に、チェックボックスのステータスによって、スクリプトを埋め込む例 If Me.CheckBox1.Checked Then Me.Button1.OnClientClick = "return confirm('移動?');" Else Me.Button1.OnClientClick = "" End If End Sub
その他の回答 (4)
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
お礼欄を読み返したのですが、行いたいことの内容が読み取ることが出来ませんでした。 その読み取れていない状態でのアドバイスですので、トンチンカンであれば補足してください。 >ボタンを押したときは「絶対に」メッセージが出ちゃうんですね(汗) それであれば、 Button1.OnClientClick = "" とすると、メッセージは出力されなくなります。 >if a = True Then >'ぼたんを表示 >Else >'ぼたん表示しない ボタン.Visible = True または False でよいのでは? たぶん的を外した内容となっているんだろうなぁ~ やはり、、、詳細を、、、
お礼
わかりづらい返答に対してご回答いただき誠にありがとうございます。 大変恐縮であります。。。 うまく説明できるかどうかわかりませんがユーザーの動作で説明してみたいと思います。 今の状態だと 1.ボタン1を押す 2.メッセージが出る 3.YES、NOを選択する だと思います。 私の作りたい動作の場合メッセージの表示の部分で条件分岐させたいと思っています。 たとえばaspx画面にチェックボックスなどがあってチェックがついている場合メッセージを出す。 チェックがついてなければメッセージを出さないようにです。 動作としては 1.ボタン1を押す 2.チェックボックスの確認 3.チェックがあるときYES,NOを選択させる です。 どうかよろしくお願いします。
- samtomsan
- ベストアンサー率55% (1060/1897)
この問題は皆さん苦労なされているようですね。 「ASP.NET VB メッセージボックス」で検索しましたら数多くヒットしました。 ご希望の事(機能)は下記辺りを参照すれば出来そうです。 [ASP.NET]エラーメッセージ表示用関数 http://bigfish.jugem.jp/?eid=3 [ASP.NET]確認ダイアログのデフォルトボタンを制御する http://bigfish.jugem.jp/ ASP.NETでMsgBox(もどき)を使う http://natchan-develop.seesaa.net/article/13554435.html ASP.NetでMsgBoxをShowで出したいのですが http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1217336722
お礼
ありがとうございます 参考になりました
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
「ボタンを押下し、その条件分岐によって、サーバ側にポストするかしないか」 というのであれば、OnClientClickプロパティを使うと楽チンです。 [画面.aspx] <asp:Button ID="Button1" runat="server" Text="Button1" OnClientClick="return confirm('移動?');" /> [画面.aspx.vb] Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click Response.Redirect("http://okwave.jp/") End Sub [画面.aspx]を変更しないで[画面.aspx.vb]で行う場合は Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Button1.OnClientClick = "return confirm('移動?');" End Sub としても一緒です。 もちろん#1さんの言われているAttributes属性によって、直接書き換えてもいいです。 実現方法はイロイロです。
お礼
ありがとうございます!メッセージを出すことに成功しました! ただ、ちょっと自分が勘違い仕様でした・・・ 教えていただいた方法だとボタンを押したときは「絶対に」メッセージが出ちゃうんですね(汗) たとえば条件分岐のときに出すにはページロードのやり方ではだめだということでしょうか・・・ Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click if a = True Then 'ぼたんを表示 Else 'ぼたん表示しない ・ ・ ・
- samtomsan
- ベストアンサー率55% (1060/1897)
aspxを右クリックして「コードの表示」を選択すると Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load End Sub が表示されます。ここに Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Button1.Attributes.Add("onclick", "return confirm('本当に移動しますか?');") End Sub 書きます。参考ページはC#ですからVBの構文で書きます。 aspxを右クリックして「デザイナの表示」を選択し、その画面でツールボックスからボタンを貼り付けます。 そのボタンをダブルクリックすると Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click End Sub が表示されます。 ここに Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click Response.Redirect("http://www.atmarkit.co.jp/fdotnet/") End Sub を書きます。 F5を押して実行すれば目的のメッセージボックスが表示されるはずです。
お礼
親切なご回答ありがとうございました。やり方を示していただいたおかげでわかりました。 ただ、仕様を勘違いしてました・・・ 教えていただいた方法だとボタンを押したときは「絶対に」メッセージが出ちゃうんですね(汗) たとえば条件分岐のときに出すにはページロードのやり方ではだめだということでしょうか・・・ Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click if a = True Then 'ぼたんを表示 Else 'ぼたん表示しない ・ ・ ・
お礼
いつもいつも大変感謝しております! 自分の考える動作に一番あっていたのは※3でした。 教えていただいたものとアプリに適応したものをミックスさせたら本当に望んだとおりになりました。 ありがとうございます!