- - PR -
VBScriptのメッセージボックスの戻り値のC#コード側での取得
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-12-15 14:43
毎度、横槍すみません^^;;;;
ほむらです。 ----- まずこの話はサーバーサイドの話ではないのですか? だとすれば、ベル氏の言うとおりボタンの押された状態を何らかの形で保存して 自分自身を呼ぶしかないのではないでしょうか? C#に限らずクライアントサイド(ブラウザ)に表示された時点で サーバーサイドとの通信は切れていますから、(=.csの処理は終わっている) 両者でやりとりをしようと思えば、 もう一度サーバーサイドを呼び出さなければならないと思います。 クライアントサイドだけでの処理分岐でよいのならばレイコ氏の方法が最良だと思います。 #以下追記 #あっ runat="server"にすればいいだけなのかな? [ メッセージ編集済み 編集者: ほむら 編集日時 2003-12-15 14:47 ] | ||||||||
|
投稿日時: 2003-12-15 15:21
ちゃんと理解せずに書いて申し訳ない
これでどうでしょ? 再度見当違いなら、見なかったことに。。。
| ||||||||
|
投稿日時: 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 ] | ||||||||
|
投稿日時: 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を使いました。 何か間違っているでしょうか? | ||||||||
|
投稿日時: 2003-12-15 17:41
え?ViewStateに「登録されないようにする」ですよね? とはいえ、HtmlControlにはEnableViewStateプロパティはないので、ViewStateには登録されないですね。 これを「登録されるようにする」ですか?Page.SaveViewStateで自分で登録し、LoadViewStateで取り出すという方法があると思います。あ、runat="server"属性を付けて、コードに宣言を追加する必要がありますが。WebControlでViewStateに登録されるのは、デフォルトでないプロパティ全て、のようです。 | ||||||||
|
投稿日時: 2003-12-15 18:23
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-12-18 13:16
話がそれたままになっていて申し訳ありません。
ブラウザからエラー出ませんか?(表示しない設定があるのだったかな) Textではなくvalueにするといいと思います。
Visible=falseにしてはブラウザ側で値が取れません(とる方法を私は知りません)。それで 1つの案として、大きさを0にしては?と申し上げたのです。 [編集] ネスケで見ると見えてしまいますね<大きさ0 [ メッセージ編集済み 編集者: べる 編集日時 2003-12-24 17:35 ] | ||||||||
|
投稿日時: 2003-12-18 13:35
ベルさん、ご指摘ありがとうございます。
いま少しこの件から離れていたので、書き込みを忘れていました。 こちら側ではTextBoxのTextプロパティをValueに修正して、 hiddenコントロールにTextBoxをVisible=trueにしたものを利用して値が 取れてきた所で止まっていました。 Visible=falseだと値は取ってこれないのですね。 ベルさんの言うとおりに大きさを0にして利用することにします。 ご親切にどうもありがとうございました。 |