DropDownList的数据源是在Page_Load里面绑定的,显示没有问题,但点击按钮从后台用DropDownList.SelectedValue取不到选中的值。造成这个的主要原因有两个:
一是页面回发造成的,解决方法是将数据绑定代码放到!IsPostBack中
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string sql = string.Format("取值语句"); DropDownList.DataSource = db.GetDataTable(sql); DropDownList.DataTextField = "显示值的字段"; DropDownList.DataValueField = "内部值的字段"; DropDownList.DataBind(); } }
二是EnableViewState造成的,很多人在用asp.net做网站时为了不生成多余的代码(如下图),会把EnableViewState禁用掉,但如果你要从后台取值的话,还是得把EnableViewState设为 true,要不是取不到值的。