web-dev-qa-db-ja.com

UpdatePanel内のボタンから完全なポストバックを強制するにはどうすればよいですか?

UpdatePanel内のボタンから完全なポストバックを強制するにはどうすればよいですか?

69
André Pena

UpdatePanelの Triggers プロパティを使用して、完全なポストバックをトリガーするアクションを登録できます。

そのプロパティに PostBackTrigger オブジェクトを追加し、完全なポストバックをトリガーする必要があるコントロールのControlIDを含めます。

<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
    <ContentTemplate>
        ...
    </ContentTemplate>
    <Triggers>
        <asp:PostBackTrigger ControlID="myFullPostBackControlID" />
    </Triggers>
</asp:UpdatePanel>
84
Thibault Falise

誰も持っていないので、これを追加するだけです。上記の方法を使用せずに、コードの1行のコードビハインドでこれを行うことができます。これをpage_loadに入れるだけです:

Visual Basic

ScriptManager.GetCurrent(Me).RegisterPostBackControl(myButtonID)

C#

ScriptManager.GetCurrent(this).RegisterPostBackControl(myButtonID);
48
EvilDr

ここ から:

PostBackTriggerコントロールを使用して、UpdatePanel内のコントロールを有効にし、非同期ポストバックを実行する代わりにポストバックを発生させます。

 <Triggers>
    <asp:PostBackTrigger ControlID="controlID" />
 </Triggers>
13
Aseem Gautam

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"));
}
0
Oystein

すべてが更新パネルにあり、クリックでDocument.Readyコードが機能するように完全なポストバックを行いたい場合、古い質問にも少し注意が必要です。

1。更新パネルの外側にダミーボタンを作成し、このようなコードビハインドからクリックします

ScriptManager.RegisterStartupScript(Page, this.GetType(), "ResetDoc", "ResetDocumentReady();", true);

2。このようにフロントエンドで関数を定義します

function ResetDocumentReady() {
        $("[id$=DummyButton]").click();
    }

注:しかし、最良の方法はトリガーを使用することです。その答えは@Thibault Falise :)によって投稿されました

0
Ajmal Jamil