【问题标题】:How do I work out which trigger triggered my update panel?如何确定哪个触发器触发了我的更新面板?
【发布时间】:2009-09-22 10:51:48
【问题描述】:

我有一个更新面板和一个触发它的按钮列表。我需要一些方法来找出当加载方法(由触发器引起)关闭时按下了哪个按钮,但我无法弄清楚。发件人不会投射到触发器中,而是投射到更新面板本身。

我需要根据按下的按钮执行一些操作。

有什么建议吗?

我正在使用 ASP.NET / C#

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" OnLoad="LocationList_Load">

<Triggers>
    <asp:AsyncPostBackTrigger ControlID="btnLocMiddleEast" />
    <asp:AsyncPostBackTrigger ControlID="btnLocUSA" />
    <asp:AsyncPostBackTrigger ControlID="btnLocNewZealand" />
    <asp:AsyncPostBackTrigger ControlID="btnLocAustralia" />
    <asp:AsyncPostBackTrigger ControlID="btnLocEurope" />
    <asp:AsyncPostBackTrigger ControlID="btnLocRepublicOfIreland" />
    <asp:AsyncPostBackTrigger ControlID="btnLocNorthernIreland" />
    <asp:AsyncPostBackTrigger ControlID="btnLocWales" />
    <asp:AsyncPostBackTrigger ControlID="btnLocScotland" />

【问题讨论】:

  • 哪种语言以及它们如何触发更新面板
  • 既然是按钮的点击事件触发了更新,你已经知道是哪个按钮导致它刚刚触发了点击事件,你能把你的代码放在点击事件中吗?
  • 嗯,你说得对,它可以工作......我想当你点击一个按钮以运行它背后的代码时,页面必须刷新。我错了吗?
  • 不,这就是您使用更新面板的原因 - 这会进行部分回发以仅更新面板中的元素 - 请注意,大多数但并非所有页面生命周期事件仍然会触发。跨度>

标签: asp.net ajax updatepanel triggers


【解决方案1】:

检查我对这个问题的回答:

Making a difference between AsyncPostbacks in nested update panels

基本上你应该检查ScriptManager.AsyncPostBackSourceElementID 的触发器。

【讨论】:

    【解决方案2】:

    通常我会为每个按钮创建一个单独的 Click 事件处理程序,然后编写应该在每个事件处理程序中触发的特定代码。

    【讨论】:

    • 这不会导致页面/按钮回发吗?我真的不想刷新页面以运行代码隐藏
    • 没有。这不会触发完整的回发,因为更新面板已注册这些按钮发送的事件应该生成异步回发
    • 注意。使用更新面板时,服务器端发生的一切都与普通表单回发相同。不同之处在于请求的发出方式(异步)和返回的数据(只有进入 UpdatePanel(s) + viewstate 的 HTML)。
    【解决方案3】:

    如果你在调试,可以查看stack trace

    【讨论】:

    • 你不觉得他想知道运行时触发的来源(不是调试)
    • 他没有说,我也不想假设。如果您觉得我遗漏了什么,请随时提供替代答案。
    猜你喜欢
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    • 1970-01-01
    • 2011-08-05
    • 2013-06-21
    • 1970-01-01
    相关资源
    最近更新 更多