如何找到一个面板,并添加控件,从它的代码后面
本文关键字:添加 控件 代码 何找 一个 | 更新日期: 2023-09-27 18:06:29
在一个母版页中,我有一个面板,我想从母版页的代码后面添加控件,如下所示:
var cphRegionName = this.Page.FindControl("pnlLeft") as Panel;
cphRegionName.Controls.Add(uc);
但是我得到这个错误:
对象引用未设置为cphRegionName.Controls.Add(uc);
我已经尝试了所有可能的方法,但还是得到相同的错误。
我使用FindControl访问PANEL的原因是PANEL的名称是动态的("pnlLeft"),从Database读取
FindControl
方法不能递归工作。这意味着除非您的控件直接添加到页面中,否则它将找不到它。
如果你知道容器控件,在容器上使用FindControl,而不是在页面上。
如果你没有,你可以使用像这样的一个函数来解决这个问题
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