首先通过
DropDownList1.DataSource = list;这个绑定一个泛型list
DropDownList1.DataTextField = "name";这是你要显视的那个字段
DropDownList1.DataValueField = "id";这是一个隐藏的ID值,就是通过他去找DropDownList2
的值.
然后你通过SelectedIndexChanged这个事件,用string s = DropDownList1.SelectedValue;
找出你隐藏的那个id值,
这样子就可以实现了~~
不过要记得把DropDownList1的那个AutoPostBack属性设为true
就以你的事列为准,前台我假如有两个下拉框(DropDownList),一个班级(Dl_Grade),另一个为学生(Dl_Student)。
要求:当用户班级下拉框发生改变的时候,学生下拉框也随之改变。(采用泛型数据)
实现:
1。构建泛型类
2。填充泛型数据源
3。绑定下拉框
4。实现Chang事件
为了你这分,刚才写了下:
泛型类:
///
/// 定义一个年级学生类,便于泛型使用
///
public class GradeStudent
{
//年级
private string grade;
public string Grade
{
get { return grade; }
set { grade = value; }
}
//学生(姓名)
private string student;
public string Student
{
get { return student; }
set { student = value; }
}
public GradeStudent(string _grade, string _student)
{
this.grade = _grade;
this.student = _student;
}
}
填充数据源
///
/// 获取数据源
///
///
public List
{
List
_GradeStudent.Add(new GradeStudent("一年级", "张三"));
_GradeStudent.Add(new GradeStudent("一年级", "李四"));
_GradeStudent.Add(new GradeStudent("一年级", "王五"));
_GradeStudent.Add(new GradeStudent("二年级", "李秀"));
_GradeStudent.Add(new GradeStudent("二年级", "余娟"));
_GradeStudent.Add(new GradeStudent("二年级", "刘丽丽"));
_GradeStudent.Add(new GradeStudent("二年级", "胡小平"));
_GradeStudent.Add(new GradeStudent("三年级", "我一人"));
_GradeStudent.Add(new GradeStudent("四年级", "小强"));
_GradeStudent.Add(new GradeStudent("四年级", "黑娃"));
_GradeStudent.Add(new GradeStudent("四年级", "小白"));
_GradeStudent.Add(new GradeStudent("四年级", "吴铭志"));
_GradeStudent.Add(new GradeStudent("四年级", "随便吹"));
return _GradeStudent;
}
填充下拉框
///
/// 绑定年级下拉框
///
private void SetGrade()
{
//设置班级
foreach (GradeStudent grade in GetList())
{
if (IsOk(grade.Grade))
Gr.Add(grade.Grade);
}
Dl_Grade.DataSource = Gr;
Dl_Grade.DataBind();
}
///
/// 绑定学生下拉框
///
private void SetStudent()
{
//设置姓名下拉框
Gr.Clear();
foreach (GradeStudent grade in GetList())
{
if (grade.Grade == Dl_Grade.SelectedValue)
{
Gr.Add(grade.Student);
}
}
Dl_Student.DataSource = Gr;
Dl_Student.DataBind();
}
用到判断方法:
///
/// 年级重复筛选
///
///
///
private bool IsOk(string s)
{
foreach (string Str in Gr)
{
if (Str == s)
return false;
}
return true;
}
初始时:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//初始
SetGrade();
SetStudent();
}
}
注:全局泛型变量
//定义全局泛型变量,用来做数据源
List
年级下拉框事件
//动态变化事件
protected void Dl_Grade_SelectedIndexChanged(object sender, EventArgs e)
{
SetStudent();
}
对应的前台代码:
这个一般不是直接使用数据绑定的,一般都是使用代码去生成第二个(即dropdownlist2)中的值~