protected void Page_Load(object sender, EventArgs e)
{
ListBox newbox = new ListBox();
newbox.Items.Add(new ListItem("a")); //Page.Form.Controls.Add(newbox);
Controls.Add(newbox);
}为什么最后一句不行——会提示“类型“ListBox”的控件“ctl01”必须放在具有 runat=server 的窗体标记内。”——,而用被注释掉的那句就可以?
{
ListBox newbox = new ListBox();
newbox.Items.Add(new ListItem("a")); //Page.Form.Controls.Add(newbox);
Controls.Add(newbox);
}为什么最后一句不行——会提示“类型“ListBox”的控件“ctl01”必须放在具有 runat=server 的窗体标记内。”——,而用被注释掉的那句就可以?
解决方案 »
- 第一次提问,请高手帮忙,马上给分!!!!!!
- 使用Grid View编辑字段遇到问题 大侠请进
- 谁能说说aspx文件,为什么比asp,php文件速度执行效率慢?
- 用LoadControl动态加载用户控件使用属性问题
- 我把DATAGRID放在DATALIST里面 了,怎样获取DATAGRID的属性啊
- 各位哥哥有没有用过 FCKeditor 在线编辑器的.小弟不太会英文,没有看明白它的说明.----------看了两天了还是没有看明白.
- 请教高手:excel问题?
- 如何实现选择文件 路径,注意是路径 而不是选择文件
- 请问网站的二次查询(在第一次查询的结果进一步查询)怎么实现?
- "无效的 CurrentPageIndex 值"错误,希望各路大虾帮帮忙。30分送上
- 自动更改IP?
- 今天发的第五个贴了,你们都没有给解决了,白送你们那么多分,把分都压上了。
你在页面的代码中,this.Page属性返回的应该就是this。你可以输出表达式“this.Page==this”看看它们是不是指向同一个对象。比如你的代码是写在ascx的代码部分中,那么this跟this.Page就肯定不等了,因为this是当前的用户控件,而this.Page属性则是在运行时去向上(循着Parent属性逐层)一直找到Page。在你的页面代码中,this.Controls中可能包括Title、Head、Form等多个控件。asp.net要求检测许多控件是不是在一个HtmlForm类型的空间中,如果不是就会报异常。
{
ListBox newbox = new ListBox();
newbox.ID="myList";
if(!IsPostback)
{
newbox.Items.Add(new ListItem("a"));
}
Page.Form.Controls.Add(newbox);
}也就是说,通常会设置ID属性(因为其在控件树上的相对位置会因为其它动态控件的变化而变化,所以给个ID属性才可靠)。但是除了ID属性为外,几乎就不会重复设置其它属性。因为控件自己会记住状态,即使你添加一个Button来不断回发页面,也不需要在Page_load中重复设置属性,状态不会丢失。
真是个好方法!是true,谢谢了。