我写了个自定义控件,也加进去了,页面也显示了,这是加的代码(页面加载时触发)
foreach (SysFun sf in sysFuns)
        {
            Control roleUserControl= LoadControl("RoleUserControl.ascx");
            phRoleDistribute.Controls.Add(roleUserControl);
        }
但是当我要获取时(在该页面点击一按钮时触发)
foreach (Control c in phRoleDistribute.Controls)
调试中发现居然phRoleDistribute.Controls.Count是0
如果不是这样获取,应该怎么获取啊

解决方案 »

  1.   

    foreach (SysFun sf in sysFuns) 
            { 
                Control roleUserControl= LoadControl("RoleUserControl.ascx"); 
                phRoleDistribute.Controls.Add(roleUserControl); 
            } 
    不要放在if(!this.IsPostBack) 里面
    protected void Page_Load(object sender, EventArgs e)
        {
            foreach (SysFun sf in sysFuns) 
            { 
                Control roleUserControl= LoadControl("RoleUserControl.ascx"); 
                phRoleDistribute.Controls.Add(roleUserControl); 
            } 
    if(!this.IsPostBack){}
        }
    试试
      

  2.   

    首先,这是用户控件。
    楼上的建议可行,界面刷新需要重新load一遍control,不要放在IsPostBack里。看看是不是这个问题?
      

  3.   

    因为界面刷新是不会进入IsPostBack里的,这样你的控件等于没有重新描画,当然就没有了。