如何在更新面板中调用特定按钮的事件
本文关键字:按钮 事件 调用 更新 | 更新日期: 2023-09-27 18:35:31
>我有以下情况:
具有以下触发器的updatepanel
:
<Triggers>
<asp:AsyncPostBackTrigger ControlID="lbtn_addApp" EventName="Click" />
<asp:PostBackTrigger ControlID="btn_agree" />
<asp:PostBackTrigger ControlID="btn_disagree" />
</Triggers>
现在我想触发btn_disagree
的点击事件,所以我这样做:
protected void btn_submit_Click(object sender, EventArgs e)
{
btn_disagree_Click(null, null);
}
注意:btn_submit
在更新面板中
但是当我调用点击事件时,它不会使 postbak !
如何使用回发行为调用 btn_disagree
事件
btn_submit
在哪里?
根据您的标记,单击btn_disagree
应该会导致标准回发。 但是根据您的代码,您不会单击btn_disagree
。 您正在单击名为 btn_submit
的内容,该内容未在触发器中列出。
如果btn_submit
也是UpdatePanel
的一部分,并且您希望btn_submit
也导致回发,则需要为其添加PostBackTrigger
。 否则,它将使用UpdatePanel
的默认行为并异步调用服务器。
附带说明一下,这段代码需要一点重构:
protected void btn_submit_Click(object sender, EventArgs e)
{
btn_disagree_Click(null, null);
}
应避免直接调用事件处理程序。 它们旨在响应 UI 事件。 直接调用它们(并传递null
等)会产生非常混乱的体验,并且只是要求错误和奇怪的行为。
这段代码对我来说意味着btn_disagree_Click
内部有重要的业务逻辑需要从btn_submit_Click
使用。 该业务逻辑应重构为自己的另一种方法。 然后,两个事件处理程序可以简单地调用该方法,而不是尝试相互调用。
让处理程序只处理 UI 事件并直接控制业务逻辑。 将业务逻辑与 UI 代码分开。
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Submit_But" EventName="click" />
</Triggers>
</asp:UpdatePanel>