- PR -

VBScriptのメッセージボックスの戻り値のC#コード側での取得

投稿者投稿内容
ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2003-12-15 14:43
毎度、横槍すみません^^;;;;
ほむらです。
-----
まずこの話はサーバーサイドの話ではないのですか?
だとすれば、ベル氏の言うとおりボタンの押された状態を何らかの形で保存して
自分自身を呼ぶしかないのではないでしょうか?

C#に限らずクライアントサイド(ブラウザ)に表示された時点で
サーバーサイドとの通信は切れていますから、(=.csの処理は終わっている)
両者でやりとりをしようと思えば、
もう一度サーバーサイドを呼び出さなければならないと思います。

クライアントサイドだけでの処理分岐でよいのならばレイコ氏の方法が最良だと思います。

#以下追記
#あっ runat="server"にすればいいだけなのかな?


[ メッセージ編集済み 編集者: ほむら 編集日時 2003-12-15 14:47 ]
PoH
常連さん
会議室デビュー日: 2003/09/09
投稿数: 48
投稿日時: 2003-12-15 15:21
ちゃんと理解せずに書いて申し訳ない
これでどうでしょ?
再度見当違いなら、見なかったことに。。。

コード:
private void Page_Load(object sender, System.EventArgs e)
{
 Button1.Attributes["OnClick"] = "return confirm('OK?');"; 
}

private void Button1_Click(object sender, System.EventArgs e) 
{ 
 //処理
}



べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2003-12-15 15:25
>Jittaさん
<asp:textBox EnableViewState="false" Visible="false"・・ 
にしてもPageのEnableViewStateをfalseにしても
<input type="hidden" ・・   は出力されないんですよ・・
(そういう意味ではなくてですか?)


あ、レイコさんやPoHさんの方法は、キャンセルならSubmitしないということですね。
理解しました。キャンセル時に何も処理しなくていいのならその方法はいいですね。

[ メッセージ編集済み 編集者: べる 編集日時 2003-12-15 15:57 ]
C#初心者
会議室デビュー日: 2003/12/04
投稿数: 10
投稿日時: 2003-12-15 17:34
多数のご回答、ありがとうございます。
こちらでは実装をVBScriptで行わなければならないので、VBScriptを
使用することを考えています。また、メッセージボックスのOKボタンと
キャンセルボタンのクリック時に処理を変えなければなりません。
今までの皆さんのご意見を鑑みて、以下のように実装してみました。

VBScriptの関数に以下のFunctionを定義し、
Sub MessageF(Msg)
Dim strMessage
strMessage = Msg

If vbOK = MsgBox(strMessage,vbokcancel,strMessage) Then
Form1.tHiddenToroku.Text = "OK"
Else
Form1.tHiddenToroku.Text = "CANCEL"
End If
End Sub

C#のコードの該当ボタンのクリック時のイベントハンドラ関数に
if( tHiddenToroku.Text.ToString() == "OK" )
{
  // 処理1;
}
else
{
  // 処理2;
}
のように記述しました。

すると、C#のコード側では tHiddenToroku のTextプロパティの値が
取得できていない様でした。 (常に処理2が走ってしまう)
ここで tHiddenToroku にはTextBoxを使いました。
何か間違っているでしょうか?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-12-15 17:41
引用:

べるさんの書き込み (2003-12-15 15:25) より:

<asp:textBox EnableViewState="false" Visible="false"・・ 
にしてもPageのEnableViewStateをfalseにしても
<input type="hidden" ・・   は出力されないんですよ・・
(そういう意味ではなくてですか?)


 え?ViewStateに「登録されないようにする」ですよね?
 とはいえ、HtmlControlにはEnableViewStateプロパティはないので、ViewStateには登録されないですね。

 これを「登録されるようにする」ですか?Page.SaveViewStateで自分で登録し、LoadViewStateで取り出すという方法があると思います。あ、runat="server"属性を付けて、コードに宣言を追加する必要がありますが。WebControlでViewStateに登録されるのは、デフォルトでないプロパティ全て、のようです。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2003-12-15 18:23
引用:
Jittaさんの書き込み (2003-12-15 17:41) より:

え?ViewStateに「登録されないようにする」ですよね?
とはいえ、HtmlControlにはEnableViewStateプロパティはないので、ViewStateには登録されないですね。

これを「登録されるようにする」ですか?Page.SaveViewStateで自分で登録し、LoadViewStateで取り出すという方法があると思います。あ、runat="server"属性を付けて、コードに宣言を追加する必要がありますが。WebControlでViewStateに登録されるのは、デフォルトでないプロパティ全て、のようです。

あ、わかりにくくてごめんなさい。
HtmlControlについてはその通りです。私が言いたかったのはWebControlのTextBoxに
ついてなんですが、

<asp:TextBox id="TextBox1" Visible="true" Runat="server" ・・・
といったWebControlを書くとクライアントHTMLで
<input type="text" name="TextBox1" ・・・
といったタグが出力されますよね。ところが
<asp:TextBox id="TextBox1" Visible="false" Runat="server" ・・・
といったWebControlの場合はクライアントHTMLで
<input type="hidden" name="TextBox1" ・・・
といったタグは出力されません。なので例えば、javascriptで
form.TextBox1.value = "hoge"
のような操作をしたければ、替わりにHtmlInputHiddenを使うなど
しなければなりませんね、という話の流れです。で、asp:TextBox によって
<input type="hidden" を出力する方法があれば知りたかった
ということです。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2003-12-18 13:16
話がそれたままになっていて申し訳ありません。
引用:
C#初心者さんの書き込み (2003-12-15 17:34) より:
VBScriptの関数に以下のFunctionを定義し、
Sub MessageF(Msg)
Dim strMessage
strMessage = Msg

If vbOK = MsgBox(strMessage,vbokcancel,strMessage) Then
Form1.tHiddenToroku.Text = "OK"
Else
Form1.tHiddenToroku.Text = "CANCEL"
End If
End Sub

この関数をどうやってよんでいますか?というかForm1.tHiddenToroku.Textで
ブラウザからエラー出ませんか?(表示しない設定があるのだったかな)
Textではなくvalueにするといいと思います。

引用:
C#のコードの該当ボタンのクリック時のイベントハンドラ関数に
if( tHiddenToroku.Text.ToString() == "OK" )
{
  // 処理1;
}
else
{
  // 処理2;
}
のように記述しました。

すると、C#のコード側では tHiddenToroku のTextプロパティの値が
取得できていない様でした。 (常に処理2が走ってしまう)
ここで tHiddenToroku にはTextBoxを使いました。
何か間違っているでしょうか?

TextBoxとはWebControls.TextBoxですよね?だとすると、
Visible=falseにしてはブラウザ側で値が取れません(とる方法を私は知りません)。それで
1つの案として、大きさを0にしては?と申し上げたのです。

[編集]
ネスケで見ると見えてしまいますね<大きさ0

[ メッセージ編集済み 編集者: べる 編集日時 2003-12-24 17:35 ]
C#初心者
会議室デビュー日: 2003/12/04
投稿数: 10
投稿日時: 2003-12-18 13:35
ベルさん、ご指摘ありがとうございます。
いま少しこの件から離れていたので、書き込みを忘れていました。

こちら側ではTextBoxのTextプロパティをValueに修正して、
hiddenコントロールにTextBoxをVisible=trueにしたものを利用して値が
取れてきた所で止まっていました。
Visible=falseだと値は取ってこれないのですね。
ベルさんの言うとおりに大きさを0にして利用することにします。

ご親切にどうもありがとうございました。

スキルアップ/キャリアアップ(JOB@IT)