1、建立三个下拉菜单javascript
请选择系别
请选择专业
请选择班级
2、定义下三级拉菜单值 threeSelectData,经过ajax定义到相对应的页面,并传值前端
var threeSelectData = "";
$.ajax({
type: "GET",
url: "../getDepart3.ashx",
async: false,
success: function (data) {
threeSelectData = eval("("+data+")");
}
})
对于ajax传值的用法:java
type:请求方式(get/post)ajax
url:当前的网址;发送请求的地址;sql
async:默认值为true。默认设置下,全部请求为异步请求,若是须要发送同步请求,须要设置为false(同步请求将会锁住浏览器,用户其它操做必须等待请求完成才能够);数据库
success:请求成功后的回调函数;json
3、建立相对应的 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 listXibie = new List();
while (dr.Read())
{
string xibie = dr["DepartName"].ToString();
listXibie.Add(xibie);
}
conn.Close();async
生成一个获取专业的方法,根据前面选择出的系别进行筛选,循环读取并保存到链表中
private List 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 listProfession = new List();
while (dr2.Read())
{
string zhuanye = dr2["Profession"].ToString();
listProfession.Add(zhuanye);
}
conn.Close();
return listProfession;
}
生成一个获取专班级业的方法,根据前面选择出的专业进行筛选,循环读取并保存到链表中
private List 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 listBanji = new List();
while (dr3.Read())
{
string banji = dr3["ClassID"].ToString();
listBanji.Add(banji);
}
conn.Close();
return listBanji;
}
3、建立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 listProfession = getProfession(xiMing);
foreach (string proName in listProfession)
{
json.Append("'" + proName + "': {val: '" + rnd++.ToString() + "',items: {");
List 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
{
///
/// getDepart3 的摘要说明
///
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 listXibie = new List();
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 listProfession = getProfession(xiMing);
foreach (string proName in listProfession)
{
json.Append("'" + proName + "': {val: '" + rnd++.ToString() + "',items: {");
List 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 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 listProfession = new List();
while (dr2.Read())
{
string zhuanye = dr2["Profession"].ToString();
listProfession.Add(zhuanye);
}
conn.Close();
return listProfession;
}
private List 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 listBanji = new List();
while (dr3.Read())
{
string banji = dr3["ClassID"].ToString();
listBanji.Add(banji);
}
conn.Close();
return listBanji;
}
public bool IsReusable
{
get
{
return false;
}
}
}
}