代码之家  ›  专栏  ›  技术社区  ›  Azat

替换ASPX页上某个其他控件的用户控件

  •  0
  • Azat  · 技术社区  · 15 年前

    我在页面上有一个控件(比如按钮)。我想创建这样一个用户控件,它将有一个属性targetcontrolid,它在一个页面上获取控件的ID(button),在render上,它将用另一个按钮(第一个按钮的克隆)替换(隐藏)。有可能吗?有人做过这样的事吗?

    2 回复  |  直到 15 年前
        1
  •  2
  •   womp    15 年前

    这当然是可能的,但我建议采用一种可以减少问题的替代方法。

    不要替换目标控件,只需将其可见性设置为false来隐藏它。这样,它所做的任何处理都将继续工作,控件ID在呈现时将保持静态(自动生成的控件ID取决于控件的顺序),并且它将具有与您正在查找的效果相同的效果。

        2
  •  1
  •   Rap    15 年前

    是的,你可以做你所说的。以通常的方式创建用户控件。以下是一个链接,以防您不熟悉: Creating a User Control

    然后在代码隐藏中创建一个属性,如下所示:

    public string TargetControlID { get; set; }
    

    一旦它是一个属性,就可以通过HTML访问它:

    <Azat:AzatButton ID="abtn1" runat="server" TargetControlID="btnOtherButton1" />
    

    然后,在页面加载()事件处理程序中,根据this.abtn1.targetcontrolid实例化一个按钮,并从页面的控件集合中删除abtn1。

    this.Controls.Remove(this.abtn1);