问题是这样的:假如你的页面中,有好几个Panel对象,譬如为:
Panel1、Panel2、Panel3……PanelN,此时,想通过循环语句来调用这些Panel对象,给它们动态添加内容,想通过如下的方法来尝试,那么,是不成功的。
for (int i = 1; i <=N; i++)
{
Panel MyPanels = new Panel();
MyPanels.ID= "P" + i.ToString();
MyPanels.Controls.Add(new LiteralControl("动态添加内容为:大众计算机"));
}
上面的代码,没有任何问题,不出现任何异常,是通过构造一个临时的MyPanels,然后通过将其ID设置成为固定的那几个Panel的ID,试图通过MyPanels调用固定的Panel来动态添加内容。
但是事实的结果是,即不出异常,也没成功动态添加内容。
当然,原因很简单,那就是
Panel MyPanels = new Panel();
MyPanels.ID= "P" + i.ToString();
上面这两个语句没起到任何作用,那要如何解决问题呢?当然,换一种思路即可。代码如下:
for (int i = 1; i <=N; i++)
{
Panel MyPanels = (Panel)FindControl("P"+i.ToString().Trim());
MyPanels.Controls.Add(new LiteralControl("动态添加内容为:大众计算机"));
}
所以呢,解决问题的办法不是通过ID,而是通过FindControl属性。我就是被这个问题困扰了几个小时,方明白其中的道理。