ASP.NET 中 select 下拉菜单绑定数据库实现三级联动(sql查询与ajax传值)

一、创建三个<select>下拉菜单


     <div class="layui-input-inline">
           <select name="provid" id="provid" lay-filter="provid">
             <option value="">请选择系别</option>
           </select>
     </div>
     <div class="layui-input-inline">
           <select name="cityid" id="cityid" lay-filter="cityid">
               <option value="">请选择专业</option>
           </select>
     </div>
     <div class="layui-input-inline">
           <select name="areaid" id="areaid" lay-filter="areaid">
               <option value="">请选择班级</option>
           </select>
      </div>

二、定义下三级拉菜单值 threeSelectData,通过ajax定义到相对应的页面,并传值

 <script type="text/javascript">       
        var threeSelectData = "";
        $.ajax({
            type: "GET",
            url: "../getDepart3.ashx",
            async: false,
            success: function (data) {
                threeSelectData = eval("("+data+")");
            }
        })       
        </script>

对于ajax传值的用法:

type:请求方式(get/post)

url:当前的网址;发送请求的地址;

async:默认值为true。默认设置下,所有请求为异步请求,如果需要发送同步请求,需要设置为false(同步请求将会锁住浏览器,用户其它操作必须等待请求完成才可以);

success:请求成功后的回调函数;

三、创建相对应的 getDepart3.ashx 页面

首先链接数据库,创建链表;从数据库中筛选出所有的系别,循环读取并保存到链表中

            string conSql = ConfigurationManager.AppSettings["con"];
            SqlConnection conn = new SqlConnection(conSql);
            conn.Open();
            string sqlStr = "select DepartName from Class group by DepartName";
            SqlCommand cmd = new SqlCommand(sqlStr, conn);
            SqlDataReader dr = cmd.ExecuteReader();
            List<string> listXibie = new List<string>();
            while (dr.Read())
            {
                string xibie = dr["DepartName"].ToString();
                listXibie.Add(xibie);
            }

            conn.Close();

生成一个获取专业的方法,根据前面选择出的系别进行筛选,循环读取并保存到链表中


 private List<string> getProfession(string xiMing)
        {
            string conSql = ConfigurationManager.AppSettings["con"];
            SqlConnection conn = new SqlConnection(conSql);
            conn.Open();
            string sqlStr2 = "select Profession from Class where DepartName='" + xiMing + "' group by Profession";
            SqlCommand cmd2 = new SqlCommand(sqlStr2, conn);
            SqlDataReader dr2 = cmd2.ExecuteReader();
            List<string> listProfession = new List<string>();
            while (dr2.Read())
            {
                string zhuanye = dr2["Profession"].ToString();
                listProfession.Add(zhuanye);
            }
            conn.Close();
            return listProfession;

        }

生成一个获取专班级业的方法,根据前面选择出的专业进行筛选,循环读取并保存到链表中


 private List<string> getbanji(string proName)
        {
            string conSql = ConfigurationManager.AppSettings["con"];
            SqlConnection conn = new SqlConnection(conSql);
            conn.Open();
            string sqlStr3 = "select ClassID from  Class where Profession='" + proName + "'  group by ClassID";
            SqlCommand cmd3 = new SqlCommand(sqlStr3, conn);
            SqlDataReader dr3 = cmd3.ExecuteReader();
            List<string> listBanji = new List<string>();
            while (dr3.Read())
            {
                string banji = dr3["ClassID"].ToString();
                listBanji.Add(banji);
            }
            conn.Close();
            return listBanji;
        }

三、创建StringBuilder方法,用Append 方法可用来将文本或对象的字符串表示形式添加到由当前 StringBuilder 对象表示的字符串的结尾处。根据第二步三中数据间的关系进行遍历和读取

 StringBuilder json = new StringBuilder();
            json.Append("threeSelectData ={");
            int rnd = 1;
            foreach (string xiMing in listXibie)
            {
                json.Append("'" + xiMing + "':{val: '"+rnd++.ToString()+"',items: {");
                List<string> listProfession = getProfession(xiMing);
                foreach (string proName in listProfession)
                {
                    json.Append("'" + proName + "': {val: '" + rnd++.ToString() + "',items: {");
                    List<string> listBanji = getbanji(proName);
                    foreach (string banji in listBanji)
                    {
                        json.Append("'" + banji + "':'" + rnd++.ToString() + "',");
                    }
                    json.Remove(json.Length - 1, 1);
                    json.Append("}},");
                }
                json.Remove(json.Length - 1, 1);
                json.Append("}},");
            }
            json.Remove(json.Length - 1, 1);
            json.Append("}");
            String jsonstr = json.ToString();


            context.Response.Write(jsonstr);

        }

 json.Append("threeSelectData ={"); 与前端相对应,确保数据的链接传输正确;

json.Remove(json.Length - 1, 1):是在相应的下拉菜单数据的结尾去除逗号,确保格式正确;

json.Append("}},");:是在相应的下拉菜单数据的结尾添加符号,确保格式正确;

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Web;

namespace Web
{
    /// <summary>
    /// getDepart3 的摘要说明
    /// </summary>
    public class getDepart3 : IHttpHandler
    {
        
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            string conSql = ConfigurationManager.AppSettings["con"];

            SqlConnection conn = new SqlConnection(conSql);
            conn.Open();
            string sqlStr = "select DepartName from Class group by DepartName";
            SqlCommand cmd = new SqlCommand(sqlStr, conn);
            SqlDataReader dr = cmd.ExecuteReader();
            List<string> listXibie = new List<string>();
            while (dr.Read())
            {
                string xibie = dr["DepartName"].ToString();
                listXibie.Add(xibie);
            }
            conn.Close();

            StringBuilder json = new StringBuilder();
            json.Append("threeSelectData ={");
            int rnd = 1;
            foreach (string xiMing in listXibie)
            {
                json.Append("'" + xiMing + "':{val: '"+rnd++.ToString()+"',items: {");
                List<string> listProfession = getProfession(xiMing);
                foreach (string proName in listProfession)
                {
                    json.Append("'" + proName + "': {val: '" + rnd++.ToString() + "',items: {");
                    List<string> listBanji = getbanji(proName);
                    foreach (string banji in listBanji)
                    {
                        json.Append("'" + banji + "':'" + rnd++.ToString() + "',");
                    }
                    json.Remove(json.Length - 1, 1);
                    json.Append("}},");
                }
                json.Remove(json.Length - 1, 1);
                json.Append("}},");
            }
            json.Remove(json.Length - 1, 1);
            json.Append("}");
            String jsonstr = json.ToString();

            context.Response.Write(jsonstr);
        }

        private List<string> getProfession(string xiMing)
        {
            string conSql = ConfigurationManager.AppSettings["con"];
            SqlConnection conn = new SqlConnection(conSql);
            conn.Open();
            string sqlStr2 = "select Profession from Class where DepartName='" + xiMing + "' group by Profession";
            SqlCommand cmd2 = new SqlCommand(sqlStr2, conn);
            SqlDataReader dr2 = cmd2.ExecuteReader();
            List<string> listProfession = new List<string>();
            while (dr2.Read())
            {
                string zhuanye = dr2["Profession"].ToString();
                listProfession.Add(zhuanye);
            }
            conn.Close();
            return listProfession;
        }

        private List<string> getbanji(string proName)
        {
            string conSql = ConfigurationManager.AppSettings["con"];
            SqlConnection conn = new SqlConnection(conSql);
            conn.Open();
            string sqlStr3 = "select ClassID from  Class where Profession='" + proName + "'  group by ClassID";
            SqlCommand cmd3 = new SqlCommand(sqlStr3, conn);
            SqlDataReader dr3 = cmd3.ExecuteReader();
            List<string> listBanji = new List<string>();
            while (dr3.Read())
            {
                string banji = dr3["ClassID"].ToString();
                listBanji.Add(banji);
            }
            conn.Close();
            return listBanji;
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}


  • 2
    点赞
  • 0
    评论
  • 8
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论
请先登录 后发表评论~
©️2021 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页

打赏作者

抢我辣条别想跑sww

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值