如何从UpdatePanel中的按钮强制完全回发?

时间:2010-03-30 13:26:09

标签: c# .net asp.net asp.net-ajax

如何从UpdatePanel中的按钮强制完全回发?

5 个答案:

答案 0 :(得分:83)

您可以使用UpdatePanel的Triggers属性来注册触发完整回发的操作。

向该属性添加PostBackTrigger对象,包含需要触发完整回发的控件的ControlID。

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

答案 1 :(得分:46)

添加此内容是因为没有其他人拥有。可以在一行代码中的代码隐藏中执行此操作,而无需使用上述任何方法。把它放在page_load中:

Visual Basic

ScriptManager.GetCurrent(Me).RegisterPostBackControl(myButtonID)

C#

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

答案 2 :(得分:13)

来自here

使用PostBackTrigger控件启用UpdatePanel内的控件以引发回发,而不是执行异步回发。

 <Triggers>
    <asp:PostBackTrigger ControlID="controlID" />
 </Triggers>

答案 3 :(得分:0)

我在WebDataGrid中使用ImageButton时遇到了同样的问题。

我将来自EvilDr的Line放在preRender的webdatagrid中。工作得很好!

for (int i = 0; i < wdgMyData.Rows.Count; i++)
{
   ScriptManager.GetCurrent(this).RegisterPostBackControl((ImageButton)wdgMyData.Rows[i].Items[3].FindControl("btnDownloadExcel"));
}

答案 4 :(得分:0)

这是一个老问题,当所有内容都在更新面板中并且你想要完整回发以便你的 Document.Ready 代码时,有点棘手的方法点击即可使用。

1。在更新面板外创建一个虚拟按钮,然后从后面的代码中单击它

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

2。像这样在前端定义功能

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

注意:但最好的方法是使用触发器,@Thibault Falise发布的答案:)