一、创建三个<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;
}
}
}
}