Tim.Tang's Blog

Welcome to my blog, I mainly focus on .NET, J2EE and SAP relevant fields.

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

 

引用出处:http://blog.joycode.com/felix/archive/2004/10/21/36136.aspx
 1private void Page_Load(object sender, EventArgs e)
 2{
 3    DropDownList ddlDynamic = new DropDownList();
 4    ddlDynamic.ID = "ddlDynamic";
 5    HtmlForm form1 = (HtmlForm)this.FindControl("Form1");
 6    
 7    if (!IsPostBack) 
 8    {
 9        ddlDynamic.Items.Add("Before");
10    }

11    form1.Controls.Add(ddlDynamic);
12    if (!IsPostBack) 
13    {
14        ddlDynamic.Items.Add("After");
15    }

16}

其中的 "Before" 的状态不会保存到 ViewState里面,因为在
SaveViewState() 方法里面会检查这个DropDownList的一个标志位,如果标志位置位,则 IsTrackingViewState 返回 true。
置位的办法是通过 TrackViewState方法,
而 TrackViewState方法是 ControlCollection.Add 方法即“form1.Controls.Add”引发的.所以如果把form1.Controls.Add 这句话放到最前面就对了。 

posted on 2007-03-10 20:49  Tim.Tang  阅读(192)  评论(0编辑  收藏  举报