page_load
{
DropDownList ddlDynamic = new DropDownList();
ddlDynamic.ID = "ddlDynamic"; form1.Controls.Add(ddlDynamic); if (!IsPostBack)
{ }
if (IsPostBack)
{ }}
为什么PostBack的时候,form1.Controls没有继续添加新的ddlDynamic。
这跟页面的控件树以及viewstate有关,清楚的麻烦讲下原因好吗?谢谢
{
DropDownList ddlDynamic = new DropDownList();
ddlDynamic.ID = "ddlDynamic"; form1.Controls.Add(ddlDynamic); if (!IsPostBack)
{ }
if (IsPostBack)
{ }}
为什么PostBack的时候,form1.Controls没有继续添加新的ddlDynamic。
这跟页面的控件树以及viewstate有关,清楚的麻烦讲下原因好吗?谢谢
解决方案 »
- |zyciis| 如何让我的tom.Name和tom.Age当tom为null的时候,这两个表达式返回null而不是报错?第二贴 谢谢
- 如何让程序通过浏览器下载并自动运行?
- 怎么通过我写的软件进行投票
- DataGrid有分页 问题
- ASP.NET 下用OracleDataAccess.dll文件,出现 innerEXCEPTION是怎么回事?
- 想买本关于HTML CSS 和JAVASCRIPT的书,大家给介绍本?
- 各位仁兄帮忙,谢谢!
- 初学者学ASP.net(C#)看什么书比较好
- ajax怎么不能和图片上传一起使用啊?
- DataGrid中长度能不能使用百分比,自动适应屏幕大小??
- 怎样以编码(cs中)的方式更改下面按钮的 Text 文字
- 这个正则表达式怎样简化一点?
每次都会执行那段添加代码2。
每次请求页面,不管是get方式还是post,asp.net 页面都是重新实例化一遍,你说它会是
“继续添加新的ddlDynamic”吗?
3。
在这点上跟 ViewState 没有关系4。
当然跟 asp.net 页生存周期有关系了,具体请参考 MSDN,没有办法一两句说清楚~另推荐一篇对 asp.net 页生命周期以及控件周期 以及 ViewState 较深入剖析的文章
Scott Mitchell
创建动态数据输入用户界面
http://www.microsoft.com/china/msdn/library/webservices/asp.net/dnasppDynamicUI.mspx?mfr=true
同时 LZ 要记住一点 一个 Page 也是一个 Control,特殊的 Control
{里面是 ddlDynamic的数据项}这样的话,postback之后,如果是新的控件,那就没有数据了。所以应该不是添加新的控件。
动态添加的控件每次都要添加一次,因为postback后添加的并不是新的,而是第一次那个.
子控件里的id必须唯一,这样相当于这段代码
DropDownList ddlDynamic = new DropDownList();
ddlDynamic.ID = "ddlDynamic"; form1.Controls.Add(ddlDynamic);
虽然执行,但是废的,因为重复不能添加。如果有添加的话,postback后就没有绑定数据项了。
if (!IsPostBack)
{里面是 ddlDynamic的数据项}也肯定跟viewstate有关,毕竟要用上一个页面的控件树来恢复本次页面。以上是关于我的理解。请各位看看有没有错误,晚上给分!谢谢!
页面控件的实例化,不是通过控件树来恢复???