如何在更新面板中调用特定按钮的事件

本文关键字:按钮 事件 调用 更新 | 更新日期: 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>