【问题标题】:Usercontrol with button - When uc is added dynamically to another page带有按钮的用户控件 - 当 uc 被动态添加到另一个页面时
【发布时间】:2008-10-20 00:43:30
【问题描述】:

带有按钮的用户控件 - 当 uc 被动态添加到另一个页面时,我会松开按钮处理程序。

ie:我有 1 个用户控件和 1 个按钮 - 该按钮在后面的代码中有一个事件处理程序。当我以编程方式将 UserControl 添加到页面时,按钮处理程序不会触发。任何解决此问题的简单方法的想法。

通常,当我将控件动态添加到页面时,我不得不在每次回帖时重新连接事件处理程序,但我希望因为该按钮包含在 UserControl 中并且 uc 是动态添加的,所以我不会松动它 - 似乎不是这样 - 有没有更好的方法来做到这一点?我的用户控件最终会有很多按钮,我不想每次都从动态添加用户控件的页面重新连接它们。

【问题讨论】:

  • 对不起,我帮不上什么忙!多年来我没有像那样编写过 ASP.NET,现在我写了太多的 JavaScript,以至于我几乎不使用这些东西。希望你能得到更好的答案!
  • 您在 UserControl 中究竟在哪里挂钩事件?

标签: c# asp.net dynamic


【解决方案1】:

您将使用 Page.LoadControl 在页面的 OnInit 事件处理程序中添加 ascx 控件(尽管我已经在 Load 事件处理程序中这样做并且它有效,但文档指定了 OnInit)

您的用户控件(和页面)应该为每次加载和回发连接他们的事件 例如 this.buttonID.Click += new System.EventHandler(this.buttonID_Click);

如果您这样做,那么它应该都可以工作,如果没有,请检查您的 aspx/ascx 标记是否存在错误字符,例如在某处额外的

【讨论】:

    【解决方案2】:

    有时,当您将控件动态添加到页面时,按钮事件处理程序会因为控件的 ID 不同步而变得混乱。但是我再次需要看看你是如何动态加载控件的。

    【讨论】:

      【解决方案3】:

      当您动态添加任何控件时,您必须每次在 Page_Init 事件的主机页面中创建它。
      如果您这样做,请确保单击事件处理程序已连接到 UserControl 的 OnInit。我认为您不会每次都创建动态控件。

      【讨论】:

        【解决方案4】:

        您是否将其添加到 ajax UpdatePanel 内部?更新面板会捕获回发。

        【讨论】:

        • 是的,我将其添加到更新面板中,我正在更新我的帖子以提供更多信息 :-)
        猜你喜欢
        • 2012-02-07
        • 1970-01-01
        • 2012-10-25
        • 1970-01-01
        • 2017-11-23
        • 1970-01-01
        • 2017-03-23
        • 1970-01-01
        相关资源
        最近更新 更多