0

これは、ASP.Net UpdatePanel の UpdateProgress の典型的な動作ですか? ページのユーザー コントロール ウィンドウ内に UpdateProgress コントロールを含む更新パネルがあります。

次に、バックグラウンドでページを読み込み、ユーザー コントロール更新パネルのボタンをクリックすると、UpdateProgress はまったく表示されません。UpdatePanels の更新リクエストは、実際のページの処理が完了するまで登録されないようです。バックグラウンドで何も起こっていない場合に表示されることに注意してください。

私が望む機能は、あなたが期待するものです。ボタンがクリックされた後、何かが更新されるのを待つ必要がある場合は、ローダーが表示されるようにします。

静的 Web メソッドで jquery ajax を使用するだけでこの機能を取得できることはわかっていますが、ユーザー コントロール内に静的 Web メソッドを含めることはできません。私はそれをページに入れることができましたが、実際にはそこに属していません. この場合も、本格的な wcf を使用する価値はありません。私は UpdatePanel で妥協しようとしていますが、これらのことが常に何らかの問題を引き起こしているようです。

多分これはそれが機能する方法ですか?

編集:だから、私がやっていることを少し明確にします。

何が起こっているかというと、ページがあり、そのページにあるのは側面にあるいくつかのツールと大きな地図だけです。ページが最初にロードされるとき、マップのロードに時間がかかります。ロード中に、問題の更新パネルを含むツール (ユーザー コントロール) を開き、このユーザー コントロールのボタンをクリックすると、更新パネルが新しいデータで更新され、読み込みサインが表示されます (updateprogress で)。 ) の場合、UpdateProgress の読み込みイメージは表示されません。ただし、ボタンのクリックによって実行されるコードは、ページの読み込みが完了した後に実行され (予想どおり)、ユーザー コントロールを含むページに何も読み込まれていない場合、UpdateProgress が表示されます。

ページの読み込み中にローダーを表示したいだけです。

私の問題は、おそらくマップの読み込みが更新パネルにあり、UpdateProgress がユーザー コントロールの更新パネルの更新パネルにのみ関連付けられていることだと思いました。したがって、マップの読み込み中に読み込みアイコンが表示されません。しかし、そうではありません。

4

2 に答える 2

1

私はあなたがここでやっていることを完全にフォローしているわけではありませんが、ユーザー コントロールにあるものを取得し、ページに直接配置した場合に正しく機能することを確認したと思いますか?

補足として、私は個人的に UpdatePanels をリッピングし、jQuery などを理解する方が時間効率が良いという事実に加えて、パフォーマンスが大幅に節約されるため、jQuery の代替品に置き換えています。ASP.NET AJAX の癖の代わりに癖。正直なところ、UpdatePanels/ASP.NET AJAX に投資した時間を取り戻したいと思っています。

于 2009-02-12T00:26:57.010 に答える
1

OPを数回読んだ後、問題を理解したと思います。UpdateProgress を Page_Load で動作させるのが困難な状況に陥りました。ソリューション?最初に Page_Loadでサーバー側イベントを発生させないでください。以下のように、UpdatePanel 内にある AJAX タイマーを追加します。

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
  <ContentTemplate>
     <asp:Timer ID="ajxTmr1" runat="server" Interval="1000" OnTick="ajxTmr1_Tick" />
  </ContentTemplate>
</asp:UpdatePanel>

タイマー ティック イベントで、必要に応じてサーバー コードを実行します。上記の UpdatePanel に接続された Update Progress がある場合、すべてが正しく機能するはずです。

<asp:UpdateProgress ID="UpdateProgress1"  runat="server" DisplayAfter="0"  AssociatedUpdatePanelID="UpdatePanel1" Visible="false">
    <%--Panel or whatever goes here--%>
</asp:UpdateProgress>
于 2012-03-28T21:11:54.290 に答える