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
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值