[英]How to find a panel and add control to it from it's code behind
在母版页中,有一个面板,我想从母版页后面的代码向其添加控件,如下所示:
var cphRegionName = this.Page.FindControl("pnlLeft") as Panel;
cphRegionName.Controls.Add(uc);
但是我得到这个错误:
对象引用未设置为cphRegionName.Controls.Add(uc);上的对象实例
我尝试了所有其他可能的方式,但得到相同的错误。
我使用FindControl访问PANEL的原因是面板的名称是动态的(“ pnlLeft”),从数据库中读取。
FindControl
方法无法递归工作。 这意味着除非将您的控件直接添加到页面,否则它将找不到它。
如果您知道容器控件,请在其上而不是在页面上使用FindControl。
如果不这样做,则可以使用像这样的aa函数来解决问题
private Control FindControlRecursive(Control root, string id)
{
if (root.ID == id)
{
return root;
}
foreach (Control c in root.Controls)
{
Control t = FindControlRecursive(c, id);
if (t != null)
{
return t;
}
}
return null;
}
FindControl不是递归的,因此您必须确保在正确的容器上调用它。 看起来面板不是基于空引用在根上定义的。 尝试在面板的父级上调用FindControl
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.