找回密码
 会员注册
查看: 187|回复: 0

ASP下拉框联动

[复制链接]

1389

主题

5

回帖

496万

积分

管理员

积分
4962988
发表于 2024-2-29 08:40:17 | 显示全部楼层 |阅读模式

ASP 实现下拉框联动(c#)

  • 在aspx文件中添加两个下拉框,这里用(学院—专业)这对关系举例:
  1. <asp:DropDownList ID="ddlInstitute" runat="server" AutoPostBack="True"></asp:DropDownList>
  2. <asp:DropDownList ID="ddlMajor" runat="server">
  3. </asp:DropDownList>
复制代码

AutoPostBack="True"设置自动回传到服务器,是实现联动的关键
* 在ddlIntitute下拉框属性中添加OnSelectedIndexChanged="ddlInstitute_SelectedIndexChanged"实现下拉框联动


这里介绍两种添加数据源的方式

  1. 直接在代码中添加
    • 打开cs文件,在pageLoad()函数中初始下拉框内容
  1. protected void Page_Load(object sender, EventArgs e) {
  2. if (!IsPostBack) {
  3. ddlInstitute.Items.Add("计算机学院");
  4. ddlInstitute.Items.Add("经济学院");
  5. ddlInstitute.Items.Add("文法学院");
  6. ddlInstitute.SelectedIndex = 0;
  7. ddlMajor.Items.Add("软件工程");
  8. ddlMajor.Items.Add("计算机科学");
  9. ddlMajor.Items.Add("电子学");
  10. ddlMajor.Items.Add("微电子");
  11. }
  12. }
复制代码
  • 编写 ddlInstitute_SelectedIndexChanged函数,使用switch语句
  1. protected void ddlInstitute_SelectedIndexChanged(object sender, EventArgs e)
  2. {
  3. switch (ddlInstitute.Text)
  4. {
  5. case "计算机学院":
  6. ddlMajor.Items.Clear();
  7. ddlMajor.Items.Add("软件工程");
  8. ddlMajor.Items.Add("计算机科学");
  9. ddlMajor.Items.Add("电子学");
  10. ddlMajor.Items.Add("微电子");
  11. break;
  12. case "经济学院":
  13. ddlMajor.Items.Clear();
  14. ddlMajor.Items.Add("金融学");
  15. ddlMajor.Items.Add("保险学");
  16. ddlMajor.Items.Add("财政学");
  17. break;
  18. case "法学院":
  19. ddlMajor.Items.Clear();
  20. ddlMajor.Items.Add("法学");
  21. ddlMajor.Items.Add("公共事业管理");
  22. ddlMajor.Items.Add("新闻学");
  23. break;
  24. }
  25. }
  26. }
复制代码
  1. 从数据库添加
    • 在数据库中创建数据表[Institute]和表[Major],表头及示例数据如下

Institute

Major

* 编写数据库操作类返回数据表,方便之后的查询操作

  1. public class OperatorDb
  2. {
  3. private static string conStr = "Data Source=.;Initial Catalog=Demosql;Integrated Security=True";
  4. //连接字符串,Initial Catalog设置为自己的数据库
  5. public static DataTable GetDataTable(string sql)
  6. {
  7. SqlConnection con = new SqlConnection(conStr);
  8. con.Open();
  9. SqlDataAdapter ada = new SqlDataAdapter(sql, con);
  10. DataTable dt = new DataTable();
  11. ada.Fill(dt);
  12. con.Close();
  13. return dt;
  14. }
复制代码
  • 编写学院查询类和专业查询类
  1. public static DataTable GetInstituteInfo()
  2. {//得到学院信息表
  3. string sql = "select * from [dbo].[Institute] ";
  4. DataTable dt = OperatorDb.GetDataTable(sql);
  5. return dt;
  6. }
  7. public static DataTable GetMajorInfo()
  8. {//得到专业信息表
  9. string sql = "select * from [dbo].[Major] ";
  10. DataTable dt = OperatorDb.GetDataTable(sql);
  11. return dt;
  12. }
  13. public static DataTable GetMajorByInstituteID(string instituteID)
  14. {
  15. string sql = "select * from [dbo].[Major] where instituteID='"+instituteID+"'";
  16. DataTable dt = OperatorDb.GetDataTable(sql);
  17. return dt;
  18. }
复制代码

数据库部分已经完成,关于数据库的连接可查看其它教程。这里为了节省篇幅,就不赘述了
* 打开cs文件,在pageLoad()函数中初始下拉框内容

  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3. if (!IsPostBack)
  4. {
  5. DataTable institute = GetInstituteInfo();
  6. //调用查询学院函数
  7. this.ddlInstitute.DataSource = institute;
  8. //设置数据源
  9. this.ddlInstitute.DataTextField = "InstituteName";
  10. //设置文字段
  11. this.ddlInstitute.DataValueField = "InstituteID";
  12. //设置数值段
  13. this.ddlInstitute.DataBind();
  14. ddlInstitute.SelectedIndex = 0;
  15. //设置专业与上相同
  16. DataTable major =
  17. DropdownlistDB.GetMajorByInstituteID("1");
  18. //学院ID初始值为1
  19. this.ddlMajor.DataSource = major;
  20. this.ddlMajor.DataTextField = "MajorName";
  21. this.ddlMajor.DataValueField = "MajorID";
  22. this.ddlMajor.DataBind();
  23. }
  24. }
复制代码
  • 编写 ddlInstitute_SelectedIndexChanged函数,
  1. protected void ddlInstitute_SelectedIndexChanged(object sender, EventArgs e)
  2. {
  3. DataTable major = DropdownlistDB.GetMajorByInstituteID(this.ddlInstitute.SelectedValue);
  4. //this.ddlInstitute.SelectedValue为学院ID
  5. this.ddlMajor.DataSource = major;
  6. this.ddlMajor.DataTextField = "MajorName";
  7. this.ddlMajor.DataValueField = "MajorID";
  8. this.ddlMajor.DataBind();
  9. }
复制代码

到这里就基本结束了,如果对下拉框联动多次调用,可将其封装为方法方便调用

  1. public static void setInstituteDropDownList(DropDownList institute) {
  2. DataTable institutelist = GetInstituteInfo();
  3. institute.DataSource = institutelist;
  4. institute.DataTextField = "InstituteName";
  5. institute.DataValueField = "InstituteID";
  6. institute.DataBind();
  7. }
  8. public static void setMajorDropDownList(DropDownList major,string instituteid)
  9. {
  10. DataTable majorlist = DropdownlistDB.GetMajorByInstituteNo(instituteid);
  11. major.DataSource = majorlist;
  12. major.DataTextField = "MajorName";
  13. major.DataValueField = "MajorID";
  14. major.DataBind();
  15. }
复制代码

以上就是这两种下拉框联动数据绑定方法,第一次写博客,哪里不足大家多多包涵,欢迎指正(^-^)。


来源:https://blog.csdn.net/LiFHCode/article/details/78619483
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?会员注册

×
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-25 13:18 , Processed in 0.303003 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表