- PR -

ASP.NETで、確認ダイアログを条件付で表示させる方法

投稿者投稿内容
daito
常連さん
会議室デビュー日: 2005/03/26
投稿数: 30
投稿日時: 2005-04-10 00:41
ASP.NET開発をVB.NETで行っています。
ASP.NET開発初心者なので初歩的な事を質問させて頂きます。

Webコントロールのボタンをクリックした時に、JAVAScriptのconfirmを表示させ、return値で処理を分岐させる手順はこのサイトをみて理解出来ましたが、
confirmをボタンクリック時に毎回出すのではなく、ある変数が特定の値の時だけ、
そのconfirm出すような事は可能なのでしょうか?
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2005-04-10 02:02
引用:
confirmをボタンクリック時に毎回出すのではなく、ある変数が特定の値の時だけ、
そのconfirm出すような事は可能なのでしょうか?

「ある変数」はjavascriptの変数ですか?それならif文で出来ますよね。
C#の変数ですか?それなら「ある変数が特定の値の時だけ」confirmを出力すれば
いいのです。

といっても、いま実際にどういう処理をしてるのか、もう少し具体的に書いてくれると
状況がわかりやすいかも。

[ メッセージ編集済み 編集者: べる 編集日時 2005-04-10 02:03 ]
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2005-04-10 02:06
引用:

confirmをボタンクリック時に毎回出すのではなく、ある変数が特定の値の時だけ、
そのconfirm出すような事は可能なのでしょうか?


その変数がクライアント側にあるのかサーバ側にあるのか解らないのですが、どちらにせよif文で条件をみるだけですよ。サーバ側の変数でJavaScriptの挙動を変えたいときは、JavaScriptを動的に生成すればいいだけです。

いまどのようなコードか開示できませんか?

_________________
たつごろー
codeseek
こみゅぷらす
daito
常連さん
会議室デビュー日: 2005/03/26
投稿数: 30
投稿日時: 2005-04-10 21:41
みなさんご返答ありがとうございます。
説明が足りませんでした。
confirmを表示するかしないかの条件値とは、サーバ側の変数です。

何をやりたいか具体的にいいますと、Webコントロールのテキストボックスのチェンジイベントで、ある変数に、例えば「1」を代入します。チェンジイベントが起きなければこの変数の値は「0」とします。
そしてWebコントロールのボタンをクリック時に、その変数(サーバ側変数)が「1」の時に、confirmを表示して、OKなら次の処理へ進み、キャンセルならばそこへとどまります。サーバ変数が「0」の時は、confirmのOK時処理を行います。

クラサバのシステムではよくある処理ですが、これをASP.NETで行うのは無理があるのでしょうか?


NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2005-04-10 23:19
引用:

daitoさんの書き込み (2005-04-10 21:41) より:
何をやりたいか具体的にいいますと、Webコントロールのテキストボックスのチェンジイベントで、ある変数に、例えば「1」を代入します。チェンジイベントが起きなければこの変数の値は「0」とします。




そのチェンジイベントのタイミングでボタンにconfirmのスクリプトを割り当ててあげれば良いと思います。
そうすれば、その変数を用意する必要すらありません。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2005-04-11 06:37
引用:
何をやりたいか具体的にいいますと、Webコントロールのテキストボックスのチェンジイベントで、ある変数に、例えば「1」を代入します。チェンジイベントが起きなければこの変数の値は「0」とします。
そしてWebコントロールのボタンをクリック時に、その変数(サーバ側変数)が「1」の時に、confirmを表示して、OKなら次の処理へ進み、キャンセルならばそこへとどまります。サーバ変数が「0」の時は、confirmのOK時処理を行います。

OK時処理がどういうものかとか、現状どのタイミングでAttributes.Add(なのかは
わからないけど)してるか書いてもらえると答えやすいのですけれども。

確認ですが「チェンジイベント」ってサーバー側のイベントですよね?(サーバー側の
変数に代入するんだから、そうか。)
OK時処理とかの「処理」はクライアント側の処理ですよね?

たとえば、
PageLoadかどっかで Button1.Attributes["onclick"]=(OK時処理);
とかしといて、チェンジイベントのハンドラで
Button1.Attributes["onclick"]=
"if(confirm('OK?')){(OK時処理)}else{(キャンセル時処理)};"
とすればよいですかね。ただし、テキストボックスの値を変えてから最初にボタンを
押した時(初めてPostBackするとき)は当然メッセージボックスは出ませんが。
(実はテキストボックスはAutoPostBackでしたとかだと話が変わってくるかも)

もし、何らかの理由でどうしても変数で制御したいということであれば、PreRender
イベントか何かで(コントロールのイベントが起きた後に)javascriptを書き分ける
とかですかね。
daito
常連さん
会議室デビュー日: 2005/03/26
投稿数: 30
投稿日時: 2005-04-11 08:34
ご返答ありがとうございます。

処理内容についてですが、
OK時処理とは別のWebフォームを呼び出す処理です。
現状では、Attributes.Addを入れているところは、PageLoadになり、
WebコントロールのテキストボックスをAutoPostBackにはしていません。

また、Webコントロールのテキストボックスは複数あり、どのチェンジイベントにも
同じサーバ変数に同じ値を代入させて、複数あるWebコントロールのテキストボックスの内どれか一つでも、チェンジイベントが走った時にWebコントロールのボタンで確認ダイアログを表示させようとしています。

たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2005-04-11 13:34
daitoさんが求めている仕様を、プログラミングで使う言葉を排除して説明していただけませんか?エンドユーザにとってどういう風にみえてほしいとか、どういう操作をするとか。

そうすれば何とかなる気がします。

_________________
たつごろー
codeseek
こみゅぷらす

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