ASP下拉框联动

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

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

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


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

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

Institute

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

public class OperatorDb
{
    private static string conStr = "Data Source=.;Initial Catalog=Demosql;Integrated Security=True";
//连接字符串,Initial Catalog设置为自己的数据库
    public static DataTable GetDataTable(string sql)
    {
        SqlConnection con = new SqlConnection(conStr);
        con.Open();
        SqlDataAdapter ada = new SqlDataAdapter(sql, con);
        DataTable dt = new DataTable();
        ada.Fill(dt);
        con.Close();
        return dt;
    }
  • 编写学院查询类和专业查询类
 public static DataTable GetInstituteInfo()
    {//得到学院信息表   
        string sql = "select * from [dbo].[Institute] ";
        DataTable dt = OperatorDb.GetDataTable(sql);
        return dt;
    }
    public static DataTable GetMajorInfo()
    {//得到专业信息表
        string sql = "select * from [dbo].[Major] ";
        DataTable dt = OperatorDb.GetDataTable(sql);
        return dt;
    }
public static DataTable GetMajorByInstituteID(string instituteID)
    {
      string sql = "select * from [dbo].[Major] where instituteID='"+instituteID+"'";
        DataTable dt = OperatorDb.GetDataTable(sql);
        return dt;
    }

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

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
           DataTable institute = GetInstituteInfo();
          //调用查询学院函数
           this.ddlInstitute.DataSource = institute;        
           //设置数据源
           this.ddlInstitute.DataTextField = "InstituteName";
            //设置文字段
           this.ddlInstitute.DataValueField = "InstituteID"; 
           //设置数值段
           this.ddlInstitute.DataBind();  
           ddlInstitute.SelectedIndex = 0;
           //设置专业与上相同
           DataTable major = 
           DropdownlistDB.GetMajorByInstituteID("1");
          //学院ID初始值为1
           this.ddlMajor.DataSource = major;
           this.ddlMajor.DataTextField = "MajorName";
           this.ddlMajor.DataValueField = "MajorID";
           this.ddlMajor.DataBind(); 
        }
    }
  • 编写 ddlInstitute_SelectedIndexChanged函数,
protected void ddlInstitute_SelectedIndexChanged(object sender, EventArgs e)
{
     DataTable major =     DropdownlistDB.GetMajorByInstituteID(this.ddlInstitute.SelectedValue);
          //this.ddlInstitute.SelectedValue为学院ID
           this.ddlMajor.DataSource = major;
           this.ddlMajor.DataTextField = "MajorName";
           this.ddlMajor.DataValueField = "MajorID";
           this.ddlMajor.DataBind();    
}

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

   public static void setInstituteDropDownList(DropDownList institute) {
        DataTable institutelist = GetInstituteInfo();
        institute.DataSource = institutelist;
        institute.DataTextField = "InstituteName";
        institute.DataValueField = "InstituteID";
        institute.DataBind(); 
    }
    public static void setMajorDropDownList(DropDownList major,string instituteid)
    {
        DataTable majorlist = DropdownlistDB.GetMajorByInstituteNo(instituteid);
        major.DataSource = majorlist;
        major.DataTextField = "MajorName";
        major.DataValueField = "MajorID";
        major.DataBind();
    }

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

ASP.NET框架中实现下拉框联动可以使用Jquery来实现。首先,你可以创建一个控制器方法来获取某个省份的所有城市数据。在这个方法中,你可以使用Jquery的Ajax方法来发送异步请求,并返回城市数据。\[2\]接着,在前端页面中,你可以使用Jquery的change事件来监听省份下拉框的选择变化,当选择变化时,触发Ajax请求获取对应省份的城市数据,并将数据填充到城市下拉框中。这样就实现了下拉框联动效果。\[1\] 以下是一个简单的示例代码: 在控制器中: ```csharp public ActionResult GetCityList(int id) { if (!Request.IsAjaxRequest()) { return Content("请不要非法方法,这是不道德的行为!"); } BLL.Province bll = new MvcBBS.BLL.Province(); List<MvcBBS.Model.S_City> modellist = bll.GetCityList(id); return Json(modellist); } ``` 在前端页面中: ```html <select id="province"> <option value="1">省份1</option> <option value="2">省份2</option> <!-- 其他省份选项 --> </select> <select id="city"> <!-- 根据选择的省份动态生成城市选项 --> </select> <script> $(document).ready(function() { $("#province").change(function() { var provinceId = $(this).val(); $.ajax({ url: "/Controller/GetCityList", type: "GET", data: { id: provinceId }, success: function(data) { var cityOptions = ""; $.each(data, function(index, city) { cityOptions += "<option value='" + city.Id + "'>" + city.Name + "</option>"; }); $("#city").html(cityOptions); } }); }); }); </script> ``` 这样,当选择省份下拉框的选项时,城市下拉框会根据选择的省份动态生成对应的城市选项。\[1\] #### 引用[.reference_title] - *1* *2* *3* [ASP.NET MVC + Jquery 实现Ajax下拉框数据三级联动](https://blog.csdn.net/lchwhy/article/details/7438522)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值