- PR -

postback時のちらつき

投稿者投稿内容
川崎
常連さん
会議室デビュー日: 2003/05/02
投稿数: 25
投稿日時: 2003-07-16 17:57
いつもお世話になっております。川崎です。

ASP.NETでWEBアプリを作成しています。

いつも質問ばっかりで申し訳ないのですが、
POSTBACKするとページがちらついてしまう事
を回避したいのですが、可能なのでしょうか?

ページ全体がちらつく場合と、テキストボック
ス等の中身の文字だけがちらつく場合があるの
ですが、なにか設定があるのでしょうか・・?

ちなみに smartNavigationは Trueにしてある
showModalDaialogで表示したページです。

どなたかご教授ねがいませんでしょうか。
makura
ベテラン
会議室デビュー日: 2002/11/27
投稿数: 90
投稿日時: 2003-07-16 18:21
makuraです。こんにちは。

POSTBACKするということは、一旦サーバ側に現在の状況を送信し、「サーバ側で作り直された新しいページ」を読み込みなおす、ということです。
画面全体を再表示しているわけですから、ちらつきは避けられないと思います。

.NETだとかなりの処理をサーバ側に預けることになるので、通信量も多くなりますし、画面もちらつきますね。不要なデータまでVIEWSTATEに入っていたりすると、思わず「なんじゃこりゃ(x_x;」と叫びたくなるほど巨大なVIEWSTATEになっていたりします。

#smartNavigationって、まともに機能するんでしたっけ・・・?


[ メッセージ編集済み 編集者: makura 編集日時 2003-07-16 18:25 ]
川崎
常連さん
会議室デビュー日: 2003/05/02
投稿数: 25
投稿日時: 2003-07-16 18:33
makuraさん、こんにちは。

お返事、ありがとうございます。

まったくちらつかないことは無理にしても、
ページ全体(背景色までも)が、一瞬白くなって
しまいます。これをテキストの中身だけに
とどめられないものでしょうか?

実は、ページの背景も一緒にすべて真っ白になる
ページと、文字だけが白くなるページがあるの
です。

P.S.
smartNavigationはまともに動作しないと聞いた
ことがあります。TrueにするとsmartNavigation
内でエラーになるページもありますし・・・。
makura
ベテラン
会議室デビュー日: 2002/11/27
投稿数: 90
投稿日時: 2003-07-16 19:00
うーん、ちらつく範囲をテキストの中身だけにする=テキストの中身だけ更新する、ということになるかと思います。
それをやるにはJavaScriptなどを使ってかなり高度なクライアントサイドスクリプトを組んだりしなければなりませんね。
少なくとも私ならASP.NETでそれをやりたいとは思いません.

ページの背景もちらつくページはある程度「重い」ページ、一部だけちらつくページはある程度「軽い」ページではないかと思います。再表示に時間がかかっているかそうでないかの違いだけで、画面全体を書き換えていることに違いはないはずですよ。


[ メッセージ編集済み 編集者: makura 編集日時 2003-07-16 19:01 ]
川崎
常連さん
会議室デビュー日: 2003/05/02
投稿数: 25
投稿日時: 2003-07-16 20:11
makuraさん、ありがとうございます。

POSTBACK時のちらつきは、あきらめます。それよりPOSTBACKする
タイミングをなんとかしようと思います。

やりたかったことは、ボタンを押したら、画面の内容とDBの内容
の比較(サーバーサイド処理)をして、その結果により問い合わせ
メッセージを出力して [はい]ならサーバーサイド処理の続行をした
かったのです。([いいえ]なら処理しない)
そのために、画面の内容が1つでも変わったらPOSTBACKして、比較
処理をしてJAVASCRIPTを書き換えていました。

こういう場合はみなさん、どうしてらっしゃるのでしょうか?


小野@どっとねっとふぁん
ぬし
会議室デビュー日: 2001/10/30
投稿数: 402
投稿日時: 2003-07-16 21:24
Webアプリである限り、画面が書き換えられることによるちらつきは
通常では抑えることはできませんね。

#DHTML使ってごりごり書く場合を除く。

Webアプリ用に設計そのものを見直して、できるだけサーバとやりとり
しないようにするとか、.NETなので、いっそのことWebサービスに
してしまうとか、リモーティング使うとか。。。
川崎
常連さん
会議室デビュー日: 2003/05/02
投稿数: 25
投稿日時: 2003-07-17 08:56
おはようございます。

小野@EACさん、ありがとうございます。

サーバーサイドの処理結果で、問い合わせ画面を出す設計自体に
無理があったのでしょうか。

実は、ASPで、ちらつかずにそれを実現しているプログラムが
ありまして、それを今回、ASP.NETに移行しております。

ASPでできて、ASP.NETでできないはずがないと言われて
まして、困っていた次第です。

(ASPも、ASP.NETも初心者でして、違いもよくわかって
 いません)

makura
ベテラン
会議室デビュー日: 2002/11/27
投稿数: 90
投稿日時: 2003-07-17 12:12
makuraです。こんにちは。

隠しフレーム(高さがゼロのFRAMEとか、display:noneなIFRAMEとか)を使ってはどうでしょう?
メイン画面をM、隠しフレームをFとすると、

Mの送信ボタンをクリックすると、Fに問合せ用のページを読込む
Fのページは、スクリプトを使って確認ダイアログを表示。
「はい」がクリックされたら、F側からスクリプトでM側のフォームの値を書き換え、スクリプトで再度MをSubmitさせる。

M側のフォームの値をスクリプトで書き換えるのは、Submit結果の読込先フレームをFからMに変更したり、Submit先を変えたりする処理になります。
#拙い説明で申し訳ありません...

この方法なら、確認処理でMが書き換えられることはないのでちらつくこともないと思います。

古いブラウザを使わないのであれば、スクリプトからWebサービスを使うという方法もありますね。

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