如何从 UpdatePanel 中的按钮强制进行完整的页面回传?
如何从 UpdatePanel 中的按钮强制进行完整的页面回传?
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
<ContentTemplate>
...
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="myFullPostBackControlID" />
</Triggers>
</asp:UpdatePanel>
因为没有其他人提到,所以我在这里加上。可以用一行代码在code-behind中完成此操作,而不需要使用上述任何方法。只需将以下内容放入page_load中:
Visual Basic
ScriptManager.GetCurrent(Me).RegisterPostBackControl(myButtonID)
C#
ScriptManager.GetCurrent(this).RegisterPostBackControl(myButtonID);
this
或page
。 - EvilDr来自这里:
使用PostBackTrigger控件可以使UpdatePanel内的控件引发一次完全的回发,而不是执行异步回发。
<Triggers>
<asp:PostBackTrigger ControlID="controlID" />
</Triggers>
这是一个老问题,也有一些棘手的方法,当所有东西都在更新面板中,并且您想要进行完整的后台提交以使您的Document.Ready代码能够在单击时工作。
1. 在更新面板之外创建一个虚拟按钮,并像这样从后端代码中单击它
ScriptManager.RegisterStartupScript(Page, this.GetType(), "ResetDoc", "ResetDocumentReady();", true);
2. 在前端定义函数如下:
function ResetDocumentReady() {
$("[id$=DummyButton]").click();
}
注意:但最好的方法是使用触发器,@Thibault Falise发布的答案:)
我在使用WebDataGrid中的ImageButton时遇到了同样的问题。
我将EvilDr的代码放在了WebDataGrid的preRender事件中,效果非常好!
for (int i = 0; i < wdgMyData.Rows.Count; i++)
{
ScriptManager.GetCurrent(this).RegisterPostBackControl((ImageButton)wdgMyData.Rows[i].Items[3].FindControl("btnDownloadExcel"));
}