- PR -

[ASP.NET] 連続するpostbackによって処理が止まる。

投稿者投稿内容
KIMERA
大ベテラン
会議室デビュー日: 2003/02/28
投稿数: 112
お住まい・勤務地: 兵庫県・大阪府
投稿日時: 2003-10-06 15:26
こんにちわ。
VB.NET2003とWinServer2003にてWEBアプリケーションの開発をしています。

データを入力する画面のとこで躓いてしまっています。
どなたかご教授いただければ幸いです。

現在、データの入力にTextBoxと複数のDropdownlistを使用しています。
TextBoxに入力された値によって後に続くDropdownlistの内容を決定する仕掛けにしています。
そのため、各オブジェクトからフォーカスが離れるたびにPostbackしてデータを一時的に格納しているのですが、TextBoxに値を入力後、そのまま続けてDropodownlistにフォーカスをやるとフリーズしてしまいます。
TextBoxに入力後にオブジェクト以外の部分をクリックすれば問題なく処理されるのですが、連続で処理が実行される場合にのみこういった症状になってしまいます。
仕様上、postbackを毎回ごとにしない。ということは避けられません、何か良い回避法はないものでしょうか?

宜しくお願いします。
KIMERA
大ベテラン
会議室デビュー日: 2003/02/28
投稿数: 112
お住まい・勤務地: 兵庫県・大阪府
投稿日時: 2003-10-06 15:42
追記です。

ページロード時にブレイクポイントを入れてデバッグしてみました。

TextBoxから直接Dropdownlistにフォーカスが移る場合も、一度TextBoxからフォーカスを外してから移る場合も同じ結果でデバッグされます。(当然といえば当然ですが・・・)

気になるのが、通常の状態で直接フォーカスを移動したときに2度ほど画面がちらつくのです。
これはpostbackされてページを読み込み直しているんだとは思いますが、そのあとは真っ白なページで何も表示されないといった様子です。

サーバー側のスペック、クライアント側のスペックなどに問題あるのでしょうか?
現在が、テスト段階なんでローカルで全て動かしています。

CPU700Mhz RAM256でOSはWINXPのプロフェッショナルです。
また、このようなことは複数のクライアントからの同時実行などでも問題となってくるのでしょうか?
Crime
常連さん
会議室デビュー日: 2002/08/26
投稿数: 34
お住まい・勤務地: Japan
投稿日時: 2003-10-06 15:42
JavaScriptで
TextBoxにFocusがある間はDropDownListを無効にする。
Focusが無くなった場合に有効に戻す。
というのはどうでしょうか。
多少強引かもしれませんが。
KIMERA
大ベテラン
会議室デビュー日: 2003/02/28
投稿数: 112
お住まい・勤務地: 兵庫県・大阪府
投稿日時: 2003-10-06 15:56
Crimeさん、どうもありがとうございます。
試しにやってみようと思います。
そのほかの方法も考えながらやっていますので、何か発見しましたら報告させていただきます。
ハヤ
常連さん
会議室デビュー日: 2003/06/04
投稿数: 41
投稿日時: 2003-10-06 16:12
実は私も最近同じ件で悩んでいました。
もしよかったら、こちらのスレを参考にしてみて下さい。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=6305&forum=7&1
KIMERA
大ベテラン
会議室デビュー日: 2003/02/28
投稿数: 112
お住まい・勤務地: 兵庫県・大阪府
投稿日時: 2003-10-06 16:44
ハヤさん、ありがとうございます。
過去ログ検索中に目を通したのですが、自分では理解できずにいました;

また、Crimeさんの方法なんですが、TextBoxのフォーカスをとらえることができませんでした。

Windowsフォームの場合はTextBoxのイベントに引っ掛けて出来るんでしょうが・・・。
Webの場合はそのようなイベントが見つかりません。

そもそも、どうしてこういった現象が起こってしまうのか不思議でならないですね。
とりあえず、自分なりにもう少し調べてみます。
どうもありがとうございました。
ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2003-10-06 17:04
ども、ほむらです。
.NETに関してはわからない(ごめんなさい)のでなんともいえないのですが
画面イメージとかがうまく想像できませんけど
なんとなく、JavaScriptだけで事足りるように思えます。。
どうなんでしょう?
--------------------
ちなみに、<input type="text" /> なら onclickで
フォーカスを得たというイベントを取得できると思うのですが。。。

引用:

現在、データの入力にTextBoxと複数のDropdownlistを使用しています。
TextBoxに入力された値によって後に続くDropdownlistの内容を決定する仕掛けにしています。
そのため、各オブジェクトからフォーカスが離れるたびにPostbackしてデータを一時的に格納しているのですが、TextBoxに値を入力後、そのまま続けてDropodownlistにフォーカスをやるとフリーズしてしまいます。
TextBoxに入力後にオブジェクト以外の部分をクリックすれば問題なく処理されるのですが、連続で処理が実行される場合にのみこういった症状になってしまいます。
仕様上、postbackを毎回ごとにしない。ということは避けられません、何か良い回避法はないものでしょうか?


なぜ?差し支えなければ太字の部分理由を知りたいです。
KIMERA
大ベテラン
会議室デビュー日: 2003/02/28
投稿数: 112
お住まい・勤務地: 兵庫県・大阪府
投稿日時: 2003-10-06 17:13
ほむらさん、ありがとうございます。
まず、JavaScriptのほうですが、onClickにひっかけた後の処理でフォーカスが外れた場合はどうすればいいのかと悩んでいました。
が、onMouceOutをド忘れしていました^^;
ほむらさんへのレスをしながら思い出したのでこちらは後ほど試してみようと思います。

で、質問に対する答えですが。
TextBoxに入力するのは郵便番号みたいなものと考えてください。
その郵便番号次第でDropdownlistの内容が変わるという仕掛けなのですが、
(例:631と入力して該当する住所のリストを生成。)
その郵便番号をpostbackで一度返して、それを判断して次にDropdownlistを生成しています。
これは頼まれた先の仕様なので変更はし難いということなのです。

とりあえずJavaScriptで試してみます。
ありがとうございます。

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