【问题标题】:Dynamically added controls causing static button event to only fire after second click动态添加的控件导致静态按钮事件仅在第二次单击后触发
【发布时间】:2010-08-12 03:10:31
【问题描述】:

我有一个自定义用户控件,它包含一个动态的控件列表,以及一个在 aspx 页面上声明(连同 OnClick 声明)的静态按钮。该按钮显示或隐藏包含动态控件列表的面板。

我发现一个问题,我认为 与动态添加的控件有关,其中按钮事件方法(即使它不是动态添加的)仅在第二次单击时触发。我认为这与按钮事件方法在创建控件之前连接的事实有关,并且当突然出现新的动态控件时,事件方法在回发时连接不正确页。在第二次单击时它可以工作,因为动态控件已全部创建并且只是被持久化。(如果我错了,请有人纠正我 - 我花了一整天的时间来追踪这个:()

我的问题是,我该如何解决这个问题?我也尝试动态连接按钮的事件,但我不确定将所有这些声明放入的顺序。有什么想法吗?

【问题讨论】:

  • 如果您没有得到答案,请将您的 aspx 和代码贴在后面...

标签: c# .net events dynamic postback


【解决方案1】:

您确定该按钮会在第一次点击时回复吗?否则,它可能与客户端相关。假设该按钮确实第一次发回并且它是一个提交按钮(UseSubmitBehavior="true"),那么问题可能是由于

  1. 后数据处理发生后可能会添加用户控件(后数据处理负责引发按钮事件)
  2. 出于某种原因,按钮控件 ID(唯一 ID)会在回发后发生变化,或者按钮 ID 在数据处理后到呈现控件时会发生变化。

如果您无法解决问题,您可以采取其他方式 - 通过查看帖子数据,例如

if (Request.Form[button.UniqueID] != null) { // Do button click processing }

【讨论】:

    猜你喜欢
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-28
    • 2015-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多