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

动态添加时用户控件的元素未初始化?

  •  0
  • eftpotrm  · 技术社区  · 14 年前

    我已经构建了一个自定义的ASP.NET Web用户控件;以前已经做了足够多次,但这一次操作不当,我无法找出原因。

    如果调用页直接在其标记中包含用户控件,则一切正常,控件的行为与预期一致。

    但是,如果页面动态添加此特定控件(到母版页中的占位符,这就是所谓的整个控件),则其中的元素将牢牢保持为空-用户控件中的任何内容都不会写入客户端,包括用户控件中的静态内容。

    我哪里可能出错?

    4 回复  |  直到 12 年前
        1
  •  2
  •   MikeD    12 年前

    答案排序-ID是无关紧要的,它可以不使用,但如果你这样做

    Control a = new Control;
    

    它不起作用,但是

    Control a = (Control)Page.LoadControl("~/Folder/Control.ascx");
    

    工作,这是我在深夜忘记的事情吗?—)

        2
  •  1
  •   digitally1    13 年前

    动态加载用户控件时…

    对于ASP.NET网站项目,以下工作

    Control a = new Control;
    

    对于ASP.NET Web应用程序项目,以下工作

    Control a = (Control)Page.LoadControl("~/Folder/Control.ascx");
    
        3
  •  0
  •   Siekiera    14 年前

    动态添加用户控件时,必须为每个添加的控件生成uniqe id。

    例如:

    Control selWebControl = (Control)Page.LoadControl("~/DL/Templates/FileLibrary.ascx");
    selWebControl.ID = "UC" + "_" + dfRow.ID;
    
        4
  •  0
  •   matt-dot-net    14 年前

    确保将其添加到页面上的控件集合中,并确保在页面生命周期中的正确时间进行添加。我喜欢重写CreateChildControls。

    因此,请确保您正在执行page.controls.add(myNewControl)或placeholder1.controls.add(myNewControl)。

    如果显示动态创建控件并将其添加到页面的代码,可能会有所帮助

    推荐文章