asp.net里面dropdownlist的数据绑定功能(使用泛型集合)

asp.net里面如何选择一个dropdownlist1的值而让另一个dropdownlist2里的值随之改变,就像一些网站上选择省份,而城市也随之改变的功能。... asp.net里面如何选择一个dropdownlist1的值而让另一个dropdownlist2里的值随之改变,就像一些网站上选择省份,而城市也随之改变的功能。 展开
 我来答
匿名用户
2013-07-30
展开全部
首先通过
DropDownList1.DataSource = list;这个绑定一个泛型list
DropDownList1.DataTextField = "name";这是你要显视的那个字段
DropDownList1.DataValueField = "id";这是一个隐藏的ID值,就是通过他去找DropDownList2
的值.
然后你通过SelectedIndexChanged这个事件,用string s = DropDownList1.SelectedValue;
找出你隐藏的那个id值,
这样子就可以实现了~~
不过要记得把DropDownList1的那个AutoPostBack属性设为true
匿名用户
2013-07-30
展开全部
就以你的事列为准,前台我假如有两个下拉框(DropDownList),一个班级(Dl_Grade),另一个为学生(Dl_Student)。
要求:当用户班级下拉框发生改变的时候,学生下拉框也随之改变。(采用泛型数据)
实现:
1。构建泛型类
2。填充泛型数据源
3。绑定下拉框
4。实现Chang事件

为了你这分,刚才写了下:
泛型类:

/// <summary>
/// 定义一个年级学生类,便于泛型使用
/// </summary>
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;
}

}

填充数据源

/// <summary>
/// 获取数据源
/// </summary>
/// <returns></returns>
public List<GradeStudent> GetList()
{
List<GradeStudent> _GradeStudent = new List<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("四年级", "吴铭志"));
_GradeStudent.Add(new GradeStudent("四年级", "随便吹"));

return _GradeStudent;

}

填充下拉框

/// <summary>
/// 绑定年级下拉框
/// </summary>
private void SetGrade()
{
//设置班级
foreach (GradeStudent grade in GetList())
{
if (IsOk(grade.Grade))
Gr.Add(grade.Grade);
}
Dl_Grade.DataSource = Gr;
Dl_Grade.DataBind();

}
/// <summary>
/// 绑定学生下拉框
/// </summary>
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();
}

用到判断方法:

/// <summary>
/// 年级重复筛选
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
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<string> Gr = new List<string>();

年级下拉框事件

//动态变化事件
protected void Dl_Grade_SelectedIndexChanged(object sender, EventArgs e)
{
SetStudent();
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-30
展开全部
对应的前台代码:
<body>
<form id="form1" runat="server">
<div>
<div class="mg_t15 tc_gray3 ft_l">
为 <span style="color: #0033cc">绝版猪头仔</span>的问题服务事例:

年级:<asp:DropDownList ID="Dl_Grade" runat="server" AutoPostBack="True" OnSelectedIndexChanged="Dl_Grade_SelectedIndexChanged">
</asp:DropDownList>

学生:<asp:DropDownList ID="Dl_Student" runat="server">
</asp:DropDownList></div>
</div>
</form>
</body>

注意:年级下拉框AutoPostBack="True"事件为即时回传

这种类型仅仅为。NET的。

如果你想像大型站点一样的无刷新,请采用AJAX方式,后台代码大致如此。
前台用JAVASCRIPT调用xmlhttp实现无刷新与域内后台交互
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-30
展开全部
这个一般不是直接使用数据绑定的,一般都是使用代码去生成第二个(即dropdownlist2)中的值~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式