dropdownlist动态绑定viewstate禁用后取值

一直对asp.net页面周期了解得很少,尤其是一些底层机制,也一直将过且过,今天看到有个问题

就是禁用viewstate后DropDownList取不到值(DropDownList动态绑定的,不是前台赋值),自己测试了下也确实取不到。

然后网上找了下资料,其实是取得到的,只是逻辑不对

以下是摘自csdn-Jinglecat(晓风)的话

实际上即使你禁用ViewState的,也是可以的,
因为DropDownList实现了IPostBackDataHandler   ,其   SelectedValue 是每次回发都会回串的,并且保持选中状态

那么这个如何解决呢??必须要在page-load里绑定dropdownlist的数据的嘛...
========
如果你要动态的添加项,并且又要禁用   ViewState,那么不能再     Load   阶段   处理,在   Init   阶段

ExpandedBlockStart.gif 代码
void  Page_Init( object  sender, EventArgs e)
    {
        Bind();
    }
    
public   void  Bind()
    {
        
using  (SqlConnection conn  =   new  SqlConnection())
        {
            conn.ConnectionString 
=  ConfigurationManager.ConnectionStrings[ " DropDownConnection " ].ConnectionString;
            conn.Open();
            SqlCommand cmd 
=   new  SqlCommand( " select * from province " , conn);
            DropDownList1.DataSource 
=  cmd.ExecuteReader();
            DropDownList1.DataTextField 
=   " name " ;
            DropDownList1.DataValueField 
=   " id " ;
            DropDownList1.DataBind();
        }
    }

 

当你禁用   ViewState   之后,页面回发之间不维护控件状态,那么你得确保,动态添加的代码每次
都能够执行,并且为了等到Post回来的值,只有在   Init   阶段或者更高处理,   因为   IPostBackDataEventHandler   接口中加载回发数据在   Load   之前完成 

 

确实很有必要要看一下页面周期!

现在就开始奋斗!

 

转载于:https://www.cnblogs.com/linlin/archive/2010/10/08/1845831.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值