【问题标题】:asp.net dynamic user control button click issueasp.net 动态用户控制按钮点击问题
【发布时间】:2013-09-09 02:58:29
【问题描述】:

我对这个主题进行了研究,但找不到正确的答案。

在我的 default.aspx 页面中,我有一个树形视图。代码在 default.aspx 中,如下所示:

 protected void Page_Load(object sender, EventArgs e)
 {

 }
 protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
 {
      Control ucont;
      if (TreeView1.SelectedNode.Value == "Yeni Dönem")
      {
         ucont = LoadControl("usercontrols/yenidonem.ascx");
         PlaceHolder1.Controls.Add(ucont);
      }
      else
      {
         ucont = LoadControl("usercontrols/tabloktar.ascx");
         PlaceHolder1.Controls.Add(ucont);
      }
 }

我动态加载用户控件。用户控件具有按钮控件。当我动态加载它时,我无法触发用户控件的按钮单击。我该如何解决这个问题? 谢谢。

【问题讨论】:

    标签: asp.net user-controls


    【解决方案1】:

    首先,我不建议在Page_Load 事件之后动态添加控件。其他要记住的事情是,您应该在每次页面加载时添加它,并为在回发之间不会更改的控件分配唯一的 ID 值。

    在这种情况下,最简单的方法是始终将两个控件都添加到页面并使用Visibility 属性显示适当的一个。

    如果这不适合您,请尝试将代码从 TreeView1_SelectedNodeChanged 移动到 Page_Load 事件并在每个回发上加载适当的控件,直到它应该更改为另一个。

    我没有测试过这个,所以如果你在使用这个答案时有任何问题,请在 cmets 中告诉我,我会尽力提供帮助。

    【讨论】:

    • 但是在这种情况下,对于用户控制器内部的每个按钮 clcik 事件或回发,它会一次又一次地加载控件。
    • 问题是你需要在回发生成的when中加载被点击的控件,这样才能正确处理相应的点击事件.如果您不加载控件,则不会触发 Click 事件,因为在该特定回发上没有绑定到该事件的控件。当您在每次回发时将这两个控件都添加到页面时,它们总是会被加载,但是您可以使用Visibility 属性控制呈现哪个控件。
    猜你喜欢
    • 2012-04-14
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多