C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.1853 の関連記事表示

<< 0 >>
■1853  Re[1]: タブMDIについて
□投稿者/ ken -(2005/11/10(Thu) 19:02:17)

    分類:[VB.NET] 

    解決しました。
記事No.1810 のレス / END /過去ログ2より / 関連記事表示
削除チェック/

■1853  vbscript
□投稿者/ pri -(2007/03/07(Wed) 15:58:34)

    分類:[VB.NET (ASP.NET)] 

    vbscriptを使い、確認メッセージを表示させて、

    「はい」を選択した場合 →labelに"成功"と表示
    「いいえ」を選択した場合→labelに"…"

    というような処理にしたいと思い、

    HTML側
    <script language="vbscript">
    <!--
      Sub Button1_OnClick

       dim a

       if MsgBox("おや ? 不思議 ! !", 4, "確認") = vbNo Then
        form1.text1.value = "No"
       else
        form1.text1.value = "Yes"
       end if
      End Sub
    -->
    </script>

    ASP.NET側(Buttonイベント)
    If text1.Value = "No" Then
     labe1.Text = "…"
    Else
    label1.text = "成功"
    End If

    と、しているのですが、
    ボタンイベントがあるときは、値が取れず
    ボタンイベントがないときは、値が取れる

    というような感じになってしまっています。

    なので、ボタンイベントが存在していても
    値をとれる方法がわかる人がいたら、教えてください。

    お願いいたします。
親記事 /過去ログ10より / 関連記事表示
削除チェック/

■1856  Re[1]: vbscript
□投稿者/ ぼのぼの -(2007/03/07(Wed) 17:20:02)
    な、なぜにvbscript?(^^;
    「IEでしか動かなくていいからどうしてもMsgBoxを使いたい」ということでしょうか?
    ASP.NETとvbscriptはあまり相性が良くないので、
    もしjavascriptのconfirmで代用してもいいなら、そっちを使うことをお勧めします。

    あと。
    > vbscriptを使い、確認メッセージを表示させて、
    >
    > 「はい」を選択した場合 →labelに"成功"と表示
    > 「いいえ」を選択した場合→labelに"…"
    >
    > というような処理にしたいと思い、
    これが実現できれば、サーバ側に処理をうつさずクライアントスクリプトだけで
    全て処理してしまう、という方法でもOKですか?
    それとも最終的にやりたいことは確認メッセージの結果をサーバ側で拾うことで、
    上記の要件はその調査のためのミニマムコードなのでしょうか?
記事No.1853 のレス /過去ログ10より / 関連記事表示
削除チェック/

■1858  Re[2]: vbscript
□投稿者/ pri -(2007/03/07(Wed) 17:34:29)
    No1856 (ぼのぼの さん) に返信

    返信ありがとうございます。

    > な、なぜにvbscript?(^^;
    > 「IEでしか動かなくていいからどうしてもMsgBoxを使いたい」ということでしょうか?
    > ASP.NETとvbscriptはあまり相性が良くないので、
    > もしjavascriptのconfirmで代用してもいいなら、そっちを使うことをお勧めします。

    なぜかと言いますと、確認ダイアログを表示する際に、
    フォーカスをデフォルトで「いいえ」に設定したいってのがありまして
    javascriptのconfirmでは、ちょっと無理でして
    vbscriptというような感じになりました。
    vbscript以外にいい方法あればそのほうがよいかもなんですが…

    > これが実現できれば、サーバ側に処理をうつさずクライアントスクリプトだけで
    > 全て処理してしまう、という方法でもOKですか?
    > それとも最終的にやりたいことは確認メッセージの結果をサーバ側で拾うことで、
    > 上記の要件はその調査のためのミニマムコードなのでしょうか?

    サーバー側に処理が移らないと多分ダメです…。
    今はラベルの表示だけですが、おっしゃる通りで、
    後々違う処理を加える予定なので。。。
    なので、値をサーバに返し、サーバー側で処理ができるようにしたいです。

    違う方法のやり方でも、この処理ででもいいので
    よろしくお願いします。
記事No.1853 のレス /過去ログ10より / 関連記事表示
削除チェック/

■1860  Re[3]: vbscript
□投稿者/ ぼのぼの -(2007/03/07(Wed) 17:44:59)
    No1858 (pri さん) に返信
    > なぜかと言いますと、確認ダイアログを表示する際に、
    > フォーカスをデフォルトで「いいえ」に設定したいってのがありまして
    > javascriptのconfirmでは、ちょっと無理でして
    > vbscriptというような感じになりました。
    > vbscript以外にいい方法あればそのほうがよいかもなんですが…
    ちょっとめんどくさい上にこれもIE限定になってしまいますが、
    確認ダイアログの中身を自作のHTMLにしてshowModalDialogを使えば、
    javascriptでも同様のことはできると思います。

    > サーバー側に処理が移らないと多分ダメです…。
    > 今はラベルの表示だけですが、おっしゃる通りで、
    > 後々違う処理を加える予定なので。。。
    > なので、値をサーバに返し、サーバー側で処理ができるようにしたいです。
    >
    > 違う方法のやり方でも、この処理ででもいいので
    > よろしくお願いします。
    ちなみに、ASP.NETは1.1ですか?2.0ですか?
    1.1だと使えないプロパティとかあるので…
記事No.1853 のレス /過去ログ10より / 関連記事表示
削除チェック/

■1861  Re[4]: vbscript
□投稿者/ pri -(2007/03/07(Wed) 17:56:16)
    No1860 (ぼのぼの さん) に返信

    度々ありがとうございます。

    > ちょっとめんどくさい上にこれもIE限定になってしまいますが、
    > 確認ダイアログの中身を自作のHTMLにしてshowModalDialogを使えば、
    > javascriptでも同様のことはできると思います。

    確認ダイアログの中身を自作のHTMLにしてshowModalDialogも試してみたのですが、
    うまくいかず、このやり方に至ってるんですよね。。

    > ちなみに、ASP.NETは1.1ですか?2.0ですか?
    > 1.1だと使えないプロパティとかあるので…

    Frameworkのバージョンでいいのですかね?
    それでしたらV.1.1です。

    よろしくお願いします。
記事No.1853 のレス /過去ログ10より / 関連記事表示
削除チェック/

■1859  Re[3]: vbscript
□投稿者/ Blue -(2007/03/07(Wed) 17:42:35)
    >フォーカスをデフォルトで「いいえ」に設定したいってのがありまして
    「はい」がデフォルトになるように言い回しを変えるとか。
記事No.1853 のレス /過去ログ10より / 関連記事表示
削除チェック/

■1867  Re[4]: vbscript
□投稿者/ ぼのぼの -(2007/03/07(Wed) 18:58:15)
    No1859 (Blue さん) に返信
    > >フォーカスをデフォルトで「いいえ」に設定したいってのがありまして
    > 「はい」がデフォルトになるように言い回しを変えるとか。

    言い回しを変えても差し障りないメッセージならこれが一番楽ですねぇ。
    でも、例えばメッセージが
    「本当に削除しますか?」
    だった場合、逆の意味になるようにすると
    「削除するのやめませんか?」
    みたいな感じになっちゃいますねw
記事No.1853 のレス /過去ログ10より / 関連記事表示
削除チェック/

■1865  Re[1]: vbscript
□投稿者/ ぼのぼの -(2007/03/07(Wed) 18:38:35)
    No1853 (pri さん) に返信

    ローカルでちょこっと試してみてたんですが…

    > ボタンイベントがあるときは、値が取れず
    > ボタンイベントがないときは、値が取れる
    >
    > というような感じになってしまっています。
    >
    > なので、ボタンイベントが存在していても
    > 値をとれる方法がわかる人がいたら、教えてください。

    これの意味がわかんなくなったので確認させてください。

    ボタンイベントがあるとき=マウスでボタンを押したとき
    ボタンイベントがないとき=テキストボックスでEnterキーを押したとき

    という意味でしょうか?

    で、「値が取れず」「値が取れる」というのは、
    マウスでボタンを押すとダイアログの「はい」「いいえ」に合わせて
    ラベルの表示が正しく「成功」「…」とならず、
    テキストボックスでEnterキーを押すとダイアログの「はい」「いいえ」に合わせて
    ラベルの表示が正しく「成功」「…」となる、という意味でしょうか?

    だとするとこっちのローカルで起きている現象と逆なんですが(−_−;
記事No.1853 のレス /過去ログ10より / 関連記事表示
削除チェック/

■1868  Re[2]: vbscript
□投稿者/ pri -(2007/03/07(Wed) 19:19:43)
    No1865 (ぼのぼの さん) に返信

    返信ありがとうございます。

    > ローカルでちょこっと試してみてたんですが…

    ありがとうございます。

    > ボタンイベントがあるとき=マウスでボタンを押したとき
    > ボタンイベントがないとき=テキストボックスでEnterキーを押したとき

    これは、ボタンイベント自体(private button1 〜 end sub)をソースから削除し、
    ボタンを押した際にvbscriptだけ起動する状態です。

    その状態の場合は、pageが再度読み込まれないので、値を保持している状態なのだと思います。

    ボタンイベントがあるときは、ボタンイベント時にpageが読み込まれてしまうので保持できないのだと思うのですが、
    その対処法が思いつかず…
記事No.1853 のレス /過去ログ10より / 関連記事表示
削除チェック/

■1874  Re[3]: vbscript
□投稿者/ ぼのぼの -(2007/03/07(Wed) 20:08:08)
    No1868 (pri さん) に返信
    >>ボタンイベントがあるとき=マウスでボタンを押したとき
    >>ボタンイベントがないとき=テキストボックスでEnterキーを押したとき
    > 
    > これは、ボタンイベント自体(private button1 〜 end sub)をソースから削除し、
    > ボタンを押した際にvbscriptだけ起動する状態です。
    > 
    > その状態の場合は、pageが再度読み込まれないので、値を保持している状態なのだと思います。
    > 
    > ボタンイベントがあるときは、ボタンイベント時にpageが読み込まれてしまうので保持できないのだと思うのですが、
    > その対処法が思いつかず…
    
    うーん、おかしいなぁ…(−_−;
    そういう意味だとすると、こちらのローカルではボタンイベントがあるときでも値が取れてます。
    
    ちょっと長くなるので3つに分割して投稿しますね。
    【1/3】
    まずは最初に試したミニマムコード。
    
    <WebForm1.aspx>
    <%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="WebTest.WebForm1"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
      <HEAD>
        <title>WebForm1</title>
        <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
        <meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
        <meta name="vs_defaultClientScript" content="JavaScript">
        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
        <script language="vbscript">
        <!--
        Sub Button1_OnClick
          If MsgBox("おや ? 不思議 ! !", vbYesNo + vbDefaultButton2, "確認") = vbNo Then
            Form1.TextBox1.value = "No"
          Else
            Form1.TextBox1.value = "Yes"
          End If
        End Sub
        -->
        </script>
      </HEAD>
      <body>
        <form id="Form1" method="post" runat="server">
          <asp:TextBox id="TextBox1" runat="server"></asp:TextBox><br>
          <asp:Button id="Button1" runat="server" Text="Button"></asp:Button><br>
          <asp:Label id="Label1" runat="server">Label</asp:Label>
          <input type="text" name="dummy" style="display:none">
        </form>
      </body>
    </HTML>
    
    <WebForm1.aspx.vb(自動生成部除く)>
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If TextBox1.Text = "No" Then
            Label1.Text = "…"
        Else
            Label1.Text = "成功"
        End If
    End Sub
    
    このコードで、少なくともマウスでボタンを押したときは期待通りの動作になりました。
    ただし、テキストボックスでEnterキーを押すと、ダイアログが出ずにFormが送信されちゃいました。
    これには2つの対策方法があります。
記事No.1853 のレス /過去ログ10より / 関連記事表示
削除チェック/

■1875  Re[4]: vbscript
□投稿者/ ぼのぼの -(2007/03/07(Wed) 20:16:27)
    【2/3】
    次に1つめの対策方法。
    WebForm1.aspxに1行追加します。
    
      <body>
        <form id="Form1" method="post" runat="server">
          <asp:TextBox id="TextBox1" runat="server"></asp:TextBox><br>
          <asp:Button id="Button1" runat="server" Text="Button"></asp:Button><br>
          <asp:Label id="Label1" runat="server">Label</asp:Label>
          <input type="text" style="display:none"><!--ここを追加-->
        </form>
      </body>
    
    以前別件でたまたま見つけたのですが、IEには「Form内にテキストボックスが一つしかないと
    EnterキーによるSubmitでボタンのClickイベントが発生しない」というバグ(?)があります。
    
    なのでstyleで非表示にしたダミーのテキストボックスを追加して、
    Form内にテキストボックスが2つ以上になる状態をつくりだしてあげます。
    
    #思ったより短い…3分割する必要なかったなorz
記事No.1853 のレス /過去ログ10より / 関連記事表示
削除チェック/

■1876  Re[5]: vbscript
□投稿者/ ぼのぼの -(2007/03/07(Wed) 20:26:47)
    【3/3】
    次に2つめの対策方法。
    Webフォームのボタンを使うと<input type="submit">になってしまうので、
    HTMLのボタンの方を使ったら、<input type="button">として描画されるために
    テキストボックスでEnterを押したときの送信自体が行われなくなる、と考えたのですが…
    
    <WebForm1.aspx>
    <%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="WebTest.WebForm1"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
      <HEAD>
        <title>WebForm1</title>
        <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
        <meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
        <meta name="vs_defaultClientScript" content="JavaScript">
        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
        <script language="vbscript">
        <!--
        Sub Button1_OnClick
          If MsgBox("おや ? 不思議 ! !", vbYesNo + vbDefaultButton2, "確認") = vbNo Then
            Form1.TextBox1.value = "No"
          Else
            Form1.TextBox1.value = "Yes"
          End If
        End Sub
        -->
        </script>
      </HEAD>
      <body>
        <form id="Form1" method="post" runat="server">
          <asp:TextBox id="TextBox1" runat="server"></asp:TextBox><br>
          <INPUT id="Button1" type="button" value="Button" name="Button1" runat="server"><br>
          <asp:Label id="Label1" runat="server">Label</asp:Label>
          <input type="text" style="display:none">
        </form>
      </body>
    </HTML>
    
    <WebForm1.aspx.vb(自動生成部除く)>
    Private Sub Button1_ServerClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ServerClick
        If TextBox1.Text = "No" Then
            Label1.Text = "…"
        Else
            Label1.Text = "成功"
        End If
    End Sub
    
    動かしてみたらダイアログが出る前に<input>タグに自動で埋め込まれた__doPostBackが走ってしまい、
    期待した動作になりませんでした。これじゃ対策方法とは言えませんね。
    すみません。少し先走りました。
記事No.1853 のレス /過去ログ10より / 関連記事表示
削除チェック/

■1877  Re[6]: vbscript
□投稿者/ pri -(2007/03/07(Wed) 21:34:21)
    No1876 (ぼのぼの さん) に返信

    ソースまで書いていただきどうもありがとうございます。

    明日早速書いていただいたソースを参考に
    試していただきます。

    せっかくソースまで書いていただいたのに
    すぐに試せなくて、本当にすみません…

    明日試したら結果書きます。
    ので何かあったらまたよろしくお願いいたします。



記事No.1853 のレス /過去ログ10より / 関連記事表示
削除チェック/

■1888  Re[6]: vbscript
□投稿者/ pri -(2007/03/08(Thu) 11:09:14)
    No1876 (ぼのぼの さん) に返信

    いろいろ試してみたのですが、
    MsgBoxで線タック下ボタンの値が、page再読み込みされることによって
    消されてしまいます。

    ボタンを押したPageには値あり
    押され再読み込みされたPageには値なし

    って感じです。

記事No.1853 のレス /過去ログ10より / 関連記事表示
削除チェック/

■1892  Re[7]: vbscript
□投稿者/ ぼのぼの -(2007/03/08(Thu) 11:27:05)
    No1888 (pri さん) に返信
    > いろいろ試してみたのですが、
    > MsgBoxで線タック下ボタンの値が、page再読み込みされることによって
    > 消されてしまいます。

    原因としては、
    ・選択したボタンの値を保持するコントロールがサーバコントロールになっていない
    ・ViewStateが無効になってゐる
    ・Page_Loadで何か余計なことをしている
    などが考えられますが…

    私が貼ったコードを余計なコードを一切加えずそのまま動かすとどうなりますか?
記事No.1853 のレス /過去ログ10より / 関連記事表示
削除チェック/

■1893  Re[8]: vbscript
□投稿者/ pri -(2007/03/08(Thu) 11:44:22)
    2007/03/08(Thu) 12:06:14 編集(投稿者)

    No1892 (ぼのぼの さん) に返信

    返信ありがとうございます。

    > 原因としては、
    > ・選択したボタンの値を保持するコントロールがサーバコントロールになっていない
    > ・ViewStateが無効になってゐる
    > ・Page_Loadで何か余計なことをしている
    > などが考えられますが…

    ページを再度新しくし、コードを貼り付けたので
    余計なこととかはしていないと思います。

    ViewStateも"True"になっております。

    > 私が貼ったコードを余計なコードを一切加えずそのまま動かすとどうなりますか?

    【3/3】
    をそのまま貼り付けた結果、
    TextBox1.Textの値は"Nothing"でした。
    よって、確認メッセージでどちらを選択しても、
    if文で、Elseの方の処理を行ってしまいます。

    【1/3】
    をそのまま貼り付けた結果、
    TextBox1.Textの値は保持されていました。
    よって望み通りの処理ができました。

    WebControlとHymlControl
    で、なぜ値を保持できる、できないに分かれるのかわかりませんが、
    HtmlControlではこの処理はできないのでしょうか?
記事No.1853 のレス /過去ログ10より / 関連記事表示
削除チェック/

■1895  Re[9]: vbscript
□投稿者/ ぼのぼの -(2007/03/08(Thu) 12:48:53)
    No1893 (pri さん) に返信
    > 【3/3】
    > をそのまま貼り付けた結果、
    > TextBox1.Textの値は"Nothing"でした。
    > よって、確認メッセージでどちらを選択しても、
    > if文で、Elseの方の処理を行ってしまいます。
    
    あー、そっか、VS2003だと貼り付けただけじゃ駄目なんだったorz
    "Web フォーム デザイナで生成されたコード"のRegionを展開すると、
    
    Protected WithEvents Button1 As System.Web.UI.WebControls.Button
    
    の一行があるはず。HTMLコントロールを使う場合は、この部分を
    
    Protected WithEvents Button1 As System.Web.UI.HtmlControls.HtmlInputButton
    
    というふうに変えてやらないと駄目です。
    デザイナで画面をつくると自動的に生成されるんですが…
    
    ただ、どちらにしろ【3/3】は期待通りの動作にならないサンプルなので、
    
    > 【1/3】
    > をそのまま貼り付けた結果、
    > TextBox1.Textの値は保持されていました。
    > よって望み通りの処理ができました。
    
    これができたってことはとりあえずは解決ってことになるでしょうか?
    【2/3】を入れないとEnterキーでの動作がヘンにはなりますけども。
記事No.1853 のレス /過去ログ10より / 関連記事表示
削除チェック/

■1948  Re[10]: vbscript
□投稿者/ pri -(2007/03/09(Fri) 18:40:13)
    2007/03/13(Tue) 10:54:12 編集(投稿者)

    No1895 (ぼのぼの さん) に返信

    返信遅くなりましてすみません…。

    > これができたってことはとりあえずは解決ってことになるでしょうか?
    > 【2/3】を入れないとEnterキーでの動作がヘンにはなりますけども。

    はい。
    おかげさまで解決です。
    ほんとにありがとうございました。
記事No.1853 のレス / END /過去ログ10より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -