none
ポストバックが完了するまで、次の操作を無効にしたい(ASP.NET) RRS feed

  • 質問

  • 標題の件、ありがちな質問かも知れませんが、ご見解を頂けましたら幸いでございます。

    http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=28936&forum=7 の記事を参考に、ポストバックが成立するまで、ユーザから押下されて欲しくないImageButtonへ IsReadyState()のスクリプトを属性登録しています。

    Loadイベント内で、こんな感じ↓

    ImageButton25.Attributes("OnClick") = "if(!IsReadyState()) return false;"

    ところが、デバッグモードで検証するも一向に成果はなく、ポストバック成立前に、当該ImageButtonの押下が可能な状況です。

    怪しいと思われるのは当該ImageButtonが、あるModalPopupコントロールの TargetControlIDになっている点であります。

    全体図が想像できないでしょうから、記載しておきます。

    ①Webフォーム上のテキストボックスへ、社内取扱いの品名コードが入力される。(もしくは他検索画面からの値採用)

    ②ModalPopUpのLoadイベント内で、先ほどのImageButtonがいつ押されてもいいように、当該品名の在庫状況がサーバーへ確認され、パネル上(ModalPopUp上)のGridViewが最新化される。

    ③........社内の基幹システムへ在庫状況を検索しにいくので、実はそのModalPopUp上のGridViewが生成されるまである程度時間を要す。(表示はしないも)

    ④ユーザが、在庫状況からロット№を引き当てる意味で、当該のImageButtonを押下。

    ⑤ModalPopUp・パネル上のGridViewが画面に現れてくる。

    ⑤' 但し!!!! ユーザのImageButton押下が早いと、ModalPopUpは 確かに現れるも 空のGridViewとなってしまう!

    この⑤'の状況を打破したく、問い合わせしております。ModalPopUpの瞬時立ち上がってくれるイイ部分を望みながら、ある時期までは無効にしたい、という身勝手な望みかも知れません。

    先に書いた対応策で、そう簡単にいかないものでしょうか?いずれにせよ、GridViewの内容が仕上がるまで=ポストバックが成立するまでは当該ImageButtonの操作を禁止・無効化したい、というのが望みです。別策の紹介でも結構ですので、助言を頂けないでしょうか?

    何卒よろしくお願い申し上げます。

     

    2013年3月12日 8:47

回答

  • 別のスレッドの話の続きですよね? そこから説明しないと、以前の話を知らないで、このスレッドを初めて見る人には話が通じませんよ。

    掲示板の反対側にいて、掲示板に書いてあること以外は知りえない回答者に、どういう情報を提供すれば質問者さんの状況が的確に把握でき、的を得た回答がもらえるか、よく考えて情報を提供していただければと思います。
     
    また、ASP.NET と VWD Express のフォーラムを行ったり来たりしてますが、何故ですか? 今回の話は ASP.NET の問題ですよね。フォーラムに参加する全員(質問者さんを含む)のことを考えて、適切なフォーラムを選んで質問するようにしてください。


    • 編集済み SurferOnWww 2013年3月13日 1:12 誤記訂正
    • 回答としてマーク saya24 2013年3月13日 1:18
    2013年3月12日 13:01

すべての返信

  • 別のスレッドの話の続きですよね? そこから説明しないと、以前の話を知らないで、このスレッドを初めて見る人には話が通じませんよ。

    掲示板の反対側にいて、掲示板に書いてあること以外は知りえない回答者に、どういう情報を提供すれば質問者さんの状況が的確に把握でき、的を得た回答がもらえるか、よく考えて情報を提供していただければと思います。
     
    また、ASP.NET と VWD Express のフォーラムを行ったり来たりしてますが、何故ですか? 今回の話は ASP.NET の問題ですよね。フォーラムに参加する全員(質問者さんを含む)のことを考えて、適切なフォーラムを選んで質問するようにしてください。


    • 編集済み SurferOnWww 2013年3月13日 1:12 誤記訂正
    • 回答としてマーク saya24 2013年3月13日 1:18
    2013年3月12日 13:01
  • 多分、非同期ポストバック(UpdatePanel)なんかの通信ですよね。

    Sys.WebForms.PageRequestManager.getInstance()で取得できる、Sys.WebForms.PageRequestManagerのイベントで制御する必要があります

    検索したら、それっぽいことをやっているページが有ったのでのせておきます。

    http://www.squabu.com/CodeSamples/Samples/etc/DoublePost.aspx

    2013年3月13日 1:21
  • 失礼しました。ASP.NETに掲載しているつもりでした、以後気をつけますのでご容赦下さい。

    後ほど文面を改め、ASP.NETのフォーラムへ掲載しなおしたいと思います。重ねてお詫び申しあげます。

    2013年3月13日 1:27