DropDownList,常用服务器控件。
数据绑定方式可以采用循环,使用Items的Add方法追个添加数据,也可以绑定DataTable或者dataset。数据的初始化一定要放在“IsPostBack”里边,要不在回发事件中就取不到值了(只能取第一条记录的值)。
1、循环添加数据
if (!IsPostBack) { DropDownList1.Items.Clear(); //加入数据前先清空数据 for (int i = 0; i < 10; i++) { DropDownList1.Items.Add(new ListItem("我是text" + i.ToString(), "我是value" + i.ToString())); } }2、读取数据库后绑定
if (!IsPostBack) { DB _db = new DB(); string _sql = "select * from bubufxDropdownlistTable"; DataTable _DT = _db.GetDt(_sql); //调用数据库操作方法获得DataTable DropDownList1.DataSource = _DT; DropDownList1.DataTextField = "name"; //指定数据库字段name为text DropDownList1.DataValueField = "ID"; //指定数据库字段ID为value DropDownList1.DataBind(); }3、绑定完成数据后,插入首记录或者尾记录
插入首记录:
//绑定完成后向DropDownList1再加入数据,加在首行 DropDownList1.Items.Insert(0,new ListItem("加塞一个首记录","0"));添加尾记录,两种方式:
//绑定完成后向DropDownList1再加入数据,加在尾行 DropDownList1.Items.Add(new ListItem("加塞一个尾记录", "1000")); //绑定完成后向DropDownList1再加入数据,加在尾行 DropDownList1.Items.Insert(DropDownList1.Items.Count, new ListItem("加塞一个尾记录", "10000"));4、DropDownList点击后触发事件
添加DropDownList1_SelectedIndexChanged事件,并在html中加入AutoPostBack="True"代码,这样选择DropDownList的item时就可以触发事件了。
5、获取DropDownList值
获得选中的值:”DropDownList1.SelectedValue“ 或者 “DropDownList1.SelectedItem.Value”
获得选中的text:DropDownList1.SelectedItem.Text
还可以:DropDownList1.Items[DropDownList1.SelectedIndex].Text,DropDownList1.Items[DropDownList1.SelectedIndex].Value
6、加入了AutoPostBack="True"仍然不触发DropDownList1_SelectedIndexChanged事件解决办法
这一般情况下是因为value的值有重复导致,比如添加数据时:
DropDownList1.Items.Add(new ListItem("我是text" + i.ToString(), "我是value"));
这样所有的alue都是“我是value”,这样是不会触发DropDownList1_SelectedIndexChanged事件的,或者其中有重复的,当前选中的和又选择的value是一样,这样也不会触发DropDownList1_SelectedIndexChanged事件。
msdn有一个解释:ListControl.SelectedIndexChanged 事件 ,当列表控件的选定项在信息发往服务器之间变化时发生。
DropDownList数据初始化,绑定,添加,插入首行,插入结尾,不触发SelectedIndexChanged事件,[asp.net基础]