如何从UpdatePanel中的按钮强制完全回发?
答案 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发布的答案:)