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

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

80203 次浏览

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

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

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

来自 给你:

使用 PostBackTrigger 控件可以启用 UpdatePanel 中的控件以导致回发,而不是执行异步回发。

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

加上这个是因为其他人都没有。可以在代码隐藏中在一行代码中实现这一点,而不需要使用上述任何方法。把这个放到 page _ load:

VisualBasic

ScriptManager.GetCurrent(Me).RegisterPostBackControl(myButtonID)

C #

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

我在 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"));
}

这是一个老问题,有点棘手的方法,以及,当一切都在 更新面板,你想做完整的回来,以便您的 文件,准备好了代码工程点击。

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

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

像这样定义前端的函数

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

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