UpdatePanel内のボタンから完全なポストバックを強制するにはどうすればよいですか?
UpdatePanelの Triggers プロパティを使用して、完全なポストバックをトリガーするアクションを登録できます。
そのプロパティに PostBackTrigger オブジェクトを追加し、完全なポストバックをトリガーする必要があるコントロールのControlIDを含めます。
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
<ContentTemplate>
...
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="myFullPostBackControlID" />
</Triggers>
</asp:UpdatePanel>
誰も持っていないので、これを追加するだけです。上記の方法を使用せずに、コードの1行のコードビハインドでこれを行うことができます。これをpage_loadに入れるだけです:
Visual Basic
ScriptManager.GetCurrent(Me).RegisterPostBackControl(myButtonID)
C#
ScriptManager.GetCurrent(this).RegisterPostBackControl(myButtonID);
ここ から:
PostBackTriggerコントロールを使用して、UpdatePanel内のコントロールを有効にし、非同期ポストバックを実行する代わりにポストバックを発生させます。
<Triggers>
<asp:PostBackTrigger ControlID="controlID" />
</Triggers>
WebDataGrid内でImageButtonを使用しても同じ問題が発生しました。
代わりに、webdatagridのpreRender内にEvilDrのLineを配置します。うまくいきました!
for (int i = 0; i < wdgMyData.Rows.Count; i++)
{
ScriptManager.GetCurrent(this).RegisterPostBackControl((ImageButton)wdgMyData.Rows[i].Items[3].FindControl("btnDownloadExcel"));
}
すべてが更新パネルにあり、クリックでDocument.Readyコードが機能するように完全なポストバックを行いたい場合、古い質問にも少し注意が必要です。
1。更新パネルの外側にダミーボタンを作成し、このようなコードビハインドからクリックします
ScriptManager.RegisterStartupScript(Page, this.GetType(), "ResetDoc", "ResetDocumentReady();", true);
2。このようにフロントエンドで関数を定義します
function ResetDocumentReady() {
$("[id$=DummyButton]").click();
}
注:しかし、最良の方法はトリガーを使用することです。その答えは@Thibault Falise :)によって投稿されました