首先说点:
{
HR.NationDataTable table = new HR.NationDataTable();
NationTableAdapter adapter = new NationTableAdapter();
table = adapter.GetData();
DropDownList1.Items.Clear();
foreach (HR.NationRow row in table.Rows)
{
ListItem li = new ListItem(row.Name,row.Code);
DropDownList1.Items.Add(li);
}
}
方法二:
private void Show()
{
HR.NationDataTable table = new HR.NationDataTable();
NationTableAdapter adapter = new NationTableAdapter();
table = adapter.GetData();
DropDownList1.DataSource = table;
DropDownList1.DataTextField = "Name";
DropDownList1.DataValueField = "Code";
DropDownList1.DataBind();
}
2.取得选中项的Value值
Label1.Text = DropDownList1.SelectedValue;//直接取得DropDownList的Value值,这种情况最常用。
//Label1.Text = DropDownList1.SelectedItem.Value;//根据下拉列表的选中项取得下拉列表选中项的Value值,首先取得下拉列表的选中项对象,然后取得此对象的Value属性即为选中项的Value值。
//Label1.Text = DropDownList1.Items[DropDownList1.SelectedIndex].Value;//根据下拉列表选中项的索引号取得下拉列表的选中项的Value值。
3.定位下拉列表选中项(为下拉列表的选中项赋值)
DropDownList1.SelectedValue = "某个值";//定位下拉列表,为DropDownList的SelectedValue赋值。
protected void Page_Load(object sender, EventArgs e)
{
IsPostBack是页面类的一个属性,针对按钮的,确切的说是针对按钮提交功能(按钮默认是submit的)的,当按钮点击的时候IsPostBack属性为True一取反,为False,if条件判断一旦为False,就不执行Page_Load中的代码,页面的加载顺序要理解:首先页面是一个类,类只有实例化出来才能使用里面的方法和属性,所以页面一加载,(1)首先执行的是页面类的构造函数,构造函数一执行完毕,这个页面类就实例化出来,(2)然后调用Initial方法,把页面中的所有用到的控件都实例化出来(注意页面中的每一个控件也是一个对象,一个变量),当点击按钮的click事件,所要写的后台方法,就是按钮这个类中的方法和属性,只有当页面实例化完毕的时候才能够调用。所以按钮点击的操作的执行要晚于Page_Load()方法,当页面的控件实例化完毕以后,才执行Page_Load()方法,这个时候该为实例化完毕的控件绑定数据执行控件数据显示操作。按照这个逻辑,页面一加载的时候这样(不写if(!IsPostBack))做是没问题的,但是如果一旦加上按钮,比如说一个修改页面,如果加载完毕数据的时候,一点点击修改按钮,就会向我们上面提到的,首先是实例化页面这一个类,因为默认From表单时提交到页面自身,页面实例化完毕,页面中的控件生成完毕,又来执行一遍Page_Load()方法绑定控件中的显示数据,Page_Load()方法时为控件塞进数据的,这样把查出来的数据又放进生成好的控件中了,当在执行修改按钮方法的时候,控件中的值已经不再是刚才输入的值了,经过了Page_Load()方法执行,控件中的值还是从数据库中查出来的数据,这样就无法把修改的数据送回到数据库中,为了避免按钮提交的时候执行Page_Load()中的代码,于是加上一句:if(!IsPostBack),IsPostBack从字面上理解是提交回来的意思,如果为True,说明是按钮提交回来的,一取反为False,不执行if条件判断后面的代码,如果是刷新页面,或者是跳转到这个页面中,就不是提交回来的操作了,IsPostBack就为False,一取反为True,就会执行if条件判断后面的代码了。在页面的后台类中只要是有按钮就必须要加上if(!IsPostBack){}判断。
if(!this.IsPostBack)
{
........
}
}
上面图片的饿字体太模糊,看看这个清晰吗:
OK!
DropDownList控件的一系列的属性和如何来获取DropDownList控件选中项的Value值,和为DropDrownList控件指定选中项,如何生成DropDownList控件中的每一项(通过for循环、通过DataSource指定数据源):
DropDownList
为什么DropDownList在绑定的时候比Repeater绑定时候复杂,需要指定DataTextField和DataValueField,而Repeater不需要指定而是直接绑定,因为Repeater只是用来显示字段值,而没有Value值,DropDownList的每一项既有DataTextField也有DataValueField。
属性:
Items:下拉列表中的项的集合
DataTextField:下拉列表的Text显示值
DataValueField:下拉列表的Value值
SelectedValue:下拉列表选中项的Value值
SelectedItem:下拉列表的每一项(一个对象)
SelectedIndex:下拉列表选中项的索引号
AppendDataBoundItems:是否追加项,bool类型,在绑定数据的基础上追加ListItem。
应用:
1.添加项:
1)设计时添加
2)用代码添加(利用foreach循环或for循环添加、利用DataSource指定数据源的方式添加)
方法一:
private void Show()
//利用foreach循环为下拉列表的每一项赋值,foreach循环前面是集合中每一行数据的类型,后面是所遍历的集合。
(完)