- PR -

windows.confirm以外でのC#側でのポップアップ表示方法について。(分岐処理も含みます。)

1
投稿者投稿内容
まるぼろ
会議室デビュー日: 2005/03/31
投稿数: 11
お住まい・勤務地: 神奈川
投稿日時: 2005-05-05 02:04
いつもお世話になっています。
早速なのですが、クライアント側画面をASP.NETで作成し、サーバ側をC#で実装しています。DBにはOracle9Iを使用して、windows xp Proの開発環境にて現在開発をしています。
その中で、まず、pageLoadを実行させ取得してきたデータをクライアント画面に表示させます(datagridのtextboxも、もちろんあります)。
画面表示後、表示していたtextboxをvalidatorにて検証後、入力値が変更されていた場合にのみ、window.confirmみたいなポップアップを表示させ更新処理を行い、Linkbuttonを使用して遷移させたいのです。
分岐処理ですので、もちろん入力値に対して、変更がない場合には、ポップアップを出さずにLinkbuttonのイベントを拾い他画面に遷移させたいんですが、ネット上を色々私なりに模索してみたのですが、実現方法が見つからず投稿させていただきました。

実現方法をご存知のかたぜひ、ご教授願います。よろしくお願いします。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2005-05-05 03:15
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=20489&forum=7
まずはこのスレッドが参考になるでしょうか。

「windows.confirm以外での」なぜconfirmではだめなのですか?
(alertならいいってことでもないんですよねきっと。)
「C#側でのポップアップ 」C#側でconfirmポップアップを出す出さないを
制御することはできても、ポップアップを出すのはブラウザです。

ポップアップを出したいのはどの瞬間か、これによって大きく実装が分かれると
思います。(ボタンか何かを押してポストバックしようとした瞬間、とか、
一度ポストバックしてからクライアントに戻った瞬間)

「入力値が変更されていた」の判断をどこでするか。クライアント?サーバ?

validatorやらLinkbuttonが出てくるが、まずはネックになってると思われる部分の
最小のモデルでの実現を目指すと良いと思います。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-05-05 07:58
だから、まずASP.NETがどういうものか、クライアント/サーバと言っているものがどういうものか、理解してください。

それが理解できていないと、どんなに説明を受けようが、その説明を理解できません。


結論を言うと、C#側(つまりサーバで実行されるコード)で、ユーザ(つまり、クライアントで見ている人)に対して問い合わせを行うことはできません。
_________________
まるぼろ
会議室デビュー日: 2005/03/31
投稿数: 11
お住まい・勤務地: 神奈川
投稿日時: 2005-05-05 18:38
ご回答ありがとうございます。
早速なのですが、入力値の変更の判断をサーバー側にて判断し、内容が変更されている場合につき、ポップアップを表示し、更新処理を実行するという処理実行するという形です。
ポップアップを表示するタイミングとしてはクライアント画面からリンクボタンを押下し
内容が変更されているか判断し(入力値に対しての変更の判断はサーバ側で実装します。)、その判断結果に対して入力値が変更されている場合に
ポップアップメニューを表示し、yesの時は更新処理を実行、Noの場合は更新処理をせずに他画面へ遷移させたいのです。
もし、入力値に対して変更がない場合には、ポップアップ出さずに他画面に遷移させます。
表示するタイミングはポストバックし、サーバー側で入力値に対して変更があった場合にのみポップアップ表示させるという感じです。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2005-05-05 19:04
引用:

ポップアップを表示するタイミングとしてはクライアント画面からリンクボタンを押下し
内容が変更されているか判断し(入力値に対しての変更の判断はサーバ側で実装します。)、その判断結果に対して入力値が変更されている場合に
ポップアップメニューを表示し、yesの時は更新処理を実行、Noの場合は更新処理をせずに他画面へ遷移させたいのです。
もし、入力値に対して変更がない場合には、ポップアップ出さずに他画面に遷移させます。
表示するタイミングはポストバックし、サーバー側で入力値に対して変更があった場合にのみポップアップ表示させるという感じです。



処理の流れは決まったとして、何がわからないのでしょうか?
確認のポップアップ(ダイアログ)を表示する方法ですか?
確認のダイアログはクライアントスクリプトでしか表示できないので、サーバーサイドで変更があると判断した場合に、動的にスクリプトを生成することになります。
動的に生成する方法はRegisterStartupScriptで検索するといいでしょう。

ただ、この方法だと入力が変更された場合、PostBackが2回発生しますし、処理が複雑でいろいろ問題が出てきそうですけど。。。
私ならクライアントサイドで変更されたかのチェックを行いますよ。
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2005-05-05 19:06
NAL-6295です。
書いてある内容をそのまま実装すれば良いと思うけど。

1.リンクボタン押下
2.ポストバックしてサーバ側で入力値の判断
3a.変化が無ければ、Redirect。
3b.変化があれば、RegisterStartupScript等でconfirmを出力するJavaScriptを登録
まるぼろ
会議室デビュー日: 2005/03/31
投稿数: 11
お住まい・勤務地: 神奈川
投稿日時: 2005-05-06 13:11
ご回答ありがとうございます。
サーバー側でチェック処理を行うにはpostbackを2回実行してしまうので、一度実装してみたのですが、かなり複雑な処理になってしまいました。
考えとしてはPageload時にPageStateに比較対象の値を入力し、クライアント側でpagestateを呼び出し、比較を実装し、比較対象項目に対して値が変更されていた場合に
サーバー側に処理を受け渡し、更新処理を実行し、他画面に遷移させるという結論にたどり着きました。
ご教授ありがとうございました。
1

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