【发布时间】:2011-02-02 11:34:59
【问题描述】:
如何强制从 UpdatePanel 中的按钮进行完整回发?
【问题讨论】:
标签: c# .net asp.net asp.net-ajax
如何强制从 UpdatePanel 中的按钮进行完整回发?
【问题讨论】:
标签: c# .net asp.net asp.net-ajax
您可以使用 UpdatePanel 的 Triggers 属性来注册触发完整回发的操作。
向该属性添加一个PostBackTrigger 对象,包含需要触发完整回发的控件的ControlID。
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
<ContentTemplate>
...
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="myFullPostBackControlID" />
</Triggers>
</asp:UpdatePanel>
【讨论】:
只是添加这个,因为其他人没有。无需上述任何方法,就可以在一行代码的代码隐藏中执行此操作。只需将其放入 page_load 即可:
Visual Basic
ScriptManager.GetCurrent(Me).RegisterPostBackControl(myButtonID)
C#
ScriptManager.GetCurrent(this).RegisterPostBackControl(myButtonID);
【讨论】:
this 或 page
来自here:
使用 PostBackTrigger 控件启用 UpdatePanel 中的控件以导致回发而不是执行异步回发。
<Triggers>
<asp:PostBackTrigger ControlID="controlID" />
</Triggers>
【讨论】:
我在 WebDataGrid 中使用 ImageButton 时遇到了同样的问题。
我将来自 EvilDr 的 Line 放在 webdatagrid 的 preRender 中。效果很好!
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 发布的答案 :)
【讨论】: