SOで似たようなものは見つかりませんでした。
ASP.NETで、キューでUpdatePanelのJavascriptを使用して部分的なポストバックを発生させる方法はありますか?__doPostBack()
を試しましたが、完全なポストバックを実行します。
ダミーボタンでそれをだましてclick()
を起動し、その方法で部分的なポストバックを処理できますが、だましよりも優雅な方法が必要です。
ありがとう。
編集:私はこれを見つけました disturbedbuddha.wordpress.com/2007/11/26/ …しかし私はそれを動作させることができません=(
この方法が機能することを望んでいます。それは私にぴったりです!これまでのところ、この最後の方法を使用してできることは、タイマーへのゲイン参照です。タイマーが最初に無効になっているので、タイマーを開始してもポストバックは発生しないようです。ただし、Ajaxがない場合、最初にタイマーを有効にすると、間隔を置いて問題なくポストバックされます。なぜAjax呼び出しがそれを引き起こさないのですか?
これを行うには、UpdatePanelでAsyncPostBackTriggerを使用できます。イベントを発生させることができるものが必要なため、ボタンの使用は非常に簡単で、非表示の場合はうまく機能します。
これがマークアップの場合:
<asp:UpdatePanel ID="UpdatePanel1" runat="server" OnLoad="UpdatePanel1_Load">
<ContentTemplate>
<!-- Contents... -->
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ReloadThePanel" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
<asp:Button ID="ReloadThePanel" runat="server" style="display:none;" />
パネルを更新したい場合は、次の電話をかけるだけです。
__doPostBack('<%=ReloadThePanel.ClientID %>', null);
これにより、ASP.NETは、ReloadThePanelがクリックされたと見なし、トリガーによって自動生成されたJavaScriptが残りを処理します。
[〜#〜]編集[〜#〜]
トリガーや非表示のボタンを使用せずに、UpdatePanelの純粋なJavaScript更新を実行できます。最初の引数としてクライアント側IDを使用して__doPostBack
を呼び出す必要があります。
__doPostBack('<%=UpdatePanel1.ClientID %>', null);
@MatthewJacobsの回答を使用しましたが、__doPostBack
を呼び出すとIE11でランタイム例外が発生することがわかりました。 __doPostBack
の呼び出しは、テストした両方のブラウザー(IE11とChrome 52))で機能する次のJavaScript呼び出しに置き換えることができることがわかりました。
Sys.WebForms.PageRequestManager.getInstance().beginAsyncPostBack(
[ '<%=UpdatePanel1.ClientID %>' ], '<%=UpdatePanel1.ClientID %>', null
);
詳細については、 Sys.WebForms.PageRequestManager.beginAsyncPostBackメソッド を参照してください。