dropdownlist动态绑定viewstate禁用后取值
时间:2010-10-08 来源:蓝丶 sky
一直对asp.net页面周期了解得很少,尤其是一些底层机制,也一直将过且过,今天看到有个问题
就是禁用viewstate后DropDownList取不到值(DropDownList动态绑定的,不是前台赋值),自己测试了下也确实取不到。
然后网上找了下资料,其实是取得到的,只是逻辑不对
以下是摘自csdn-Jinglecat(晓风)的话
实际上即使你禁用ViewState的,也是可以的,
因为DropDownList实现了IPostBackDataHandler ,其 SelectedValue 是每次回发都会回串的,并且保持选中状态
那么这个如何解决呢??必须要在page-load里绑定dropdownlist的数据的嘛...
========
如果你要动态的添加项,并且又要禁用 ViewState,那么不能再 Load 阶段 处理,在 Init 阶段

{
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 之前完成
确实很有必要要看一下页面周期!
现在就开始奋斗!
相关阅读 更多 +