JQ与AJAX 省市区三级联动下拉框
用于初学者学习基本的联动下拉框,废话不多说,见代码
首先看控制器里的3个下拉框对应代码:
public ActionResult GetProvinceList()
{
ProvinceRepository rep = new ProvinceRepository();
var selectlist = new SelectList(rep.GetProvinceList(), "ProvinceID", "ProvinceName");
return Json(selectlist);
} public ActionResult GetCityList(string text)
{
CityRepository rep = new CityRepository();
var selectlist = new SelectList(rep.GetCityList(text), "CityID", "CityName");
return Json(selectlist);
} public ActionResult GetAreaList(string text)
{
DistrictRepository rep = new DistrictRepository();
var selectlist = new SelectList(rep.GetAreaList(text), "AreaID", "AreaName");
return Json(selectlist);
}
接着,控制器非别去定义的Repository里面向数据库读取数据,并返回
LinkageDataContext db = new LinkageDataContext();
public IQueryable GetProvinceList()
{
var name = from m in db.province select m;
return name;
}
LinkageDataContext db = new LinkageDataContext();
public IQueryable GetCityList(string text)
{
var res = from m in db.city.Where(e => e.father == text) select m;
return res;
}
LinkageDataContext db = new LinkageDataContext();
public IQueryable GetAreaList(string text)
{
var res = from m in db.area.Where(e => e.father == text) select m;
return res;
}
其实以上三个Repository可以合成一个,不过本人为了后续个别设计就分开了,读者可自行设计。接下来就是View里面的代码,View里面分为两块,一块就是下拉框的Html,另一块就是JS代码实现数据联动。本人是用的Telerik形式。
<h>省:</h>
<title>菜单联动</title>
<%= Html.Telerik().DropDownList()
.Name("EmpProvince")
.DataBinding(databingding => databingding.Ajax()
.Select("GetProvinceList", "Home"))
%> <h>市:</h>
<%= Html.Telerik().DropDownList()
.Name("EmpCity") %> <h>区:</h>
<%= Html.Telerik().DropDownList()
.Name("EmpArea") %>
接下来是JS的代码了。
$(function () {
$('#EmpProvince').bind('valueChange', onEmpProvinceChangeCity);
$('#EmpCity').bind('valueChange', onEmpProvinceChangeCity2);
})
function onEmpProvinceChangeCity() {
var dropDownList = $('#EmpCity').data('tDropDownList');
var dropDownList3 = $('#EmpArea').data('tDropDownList');
dropDownList3.dataBind(null);
var text = $("#EmpProvince").data("tDropDownList").value();
getLinkageDatas(dropDownList,
text,
"DropDownListPrvUCity",
"获取城市联动数据失败!");
}
function onEmpProvinceChangeCity2() {
var dropDownList = $('#EmpArea').data('tDropDownList');
var text = $("#EmpCity").data("tDropDownList").value();
getLinkageDatas2(dropDownList,
text,
"DropDownListPrvUCity",
"获取城市联动数据失败!");
}
function getLinkageDatas(dropDownList, text, action, message) {
if (text == "") {
dropDownList.dataBind(null);
return;
}
$.ajax({
type: "Post",
url: '<%= @Url.Action("GetCityList","Home") %>',
data: { text: text },
dataType: "json",
success: function (data) {
dropDownList.dataBind(data);
},
error: function () {
}
});
}
function getLinkageDatas2(dropDownList, text, action, message) {
if (text == "") {
dropDownList.dataBind(null);
return;
}
$.ajax({
type: "Post",
url: '<%= @Url.Action("GetAreaList","Home") %>',
data: { text: text },
dataType: "json",
success: function (data) {
dropDownList.dataBind(data);
},
error: function () {
}
});
}
需要注意的是,代码的第八第九行是处理清空的情况,就是当重选一级下拉框时,对2级和3级显示的数据清空。
至于Model的话,读者可自行编写了。希望能够帮助到大家。本人也刚学不久,有不足的望指点。
JQ与AJAX 省市区三级联动下拉框的更多相关文章
- 用jsp实现省市区三级联动下拉
jsp+jquery实现省市区三级联动下拉 不少系统都需要实现省市区三级联动下拉,像人口信息管理.电子商务网站.会员管理等,都需要填写地址相关信息.而用ajax实现的无刷新省市区三级联动下拉则可以改善 ...
- jquery+html三级联动下拉框
jquery+html三级联动下拉框及详情页面加载时的select初始化问题 html写的三个下拉框,如下: <select name="ddlQYWZYJ" id=&q ...
- 项目总结01:JSP mysql SpringMvc下中国省市县三级联动下拉框
JSP mysql SpringMvc下中国省市县三级联动下拉框 关键词 JSP mysql数据库 SpringMvc ajax Controller层 Service层 中国地区 省 ...
- Android实现三级联动下拉框 下拉列表spinner
Android实现(省.市.县)三级联动下拉框 下拉列表spinner 转载请注明出处: http://www.goteny.com/articles/2013/11/46.html http://w ...
- Web 1三级联动 下拉框 2添加修改删除 弹框
Web 三级联动 下拉框 using System; using System.Collections.Generic; using System.Linq; using System.Web; u ...
- JS年月日三级联动下拉框日期选择代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- jquery+ligerform三级联动下拉框
如下为ligerform里的三级联动下拉框: var formData=[ {display:,width:,space:,type:"select",group:"区域 ...
- jq实现简单的二级联动下拉框
1 效果图 2 html <!DOCTYPE html> <html lang="en"> <head> <meta charse ...
- ajax 实现三级联动下拉菜单
ajax 实现三级联动,相当于写了一个小插件,用的时候直接拿过来用就可以了,这里我用了数据库中的chinastates表, 数据库内容很多,三级联动里的地区名称都在里面,采用的是代号副代号的方式 比如 ...
随机推荐
- C#-简单的定时器(C# ConsoleApp) ---ShinePans
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2hpbmVwYW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA ...
- 【百度地图API】建立全国银行位置查询系统(三)——如何在地图上添加银行标注
原文:[百度地图API]建立全国银行位置查询系统(三)--如何在地图上添加银行标注 <摘要>你将在第三章中学会以下知识: 如何在地图上添加带银行logo的标注?(你也可以换成商场logo, ...
- 【SSH三大框架】Hibernate基础第六篇:多对一关联关系的映射、分析及加入、查询
这里举样例用的是:部门与员工的关系. 一个部门能够相应多个员工,这就是非常明显的多对一关联关系. 我们须要建立两个实体类:员工(Employee).部门(Department) 员工类:Employe ...
- 【百度地图API】如何制作孪生姐妹地图?
原文:[百度地图API]如何制作孪生姐妹地图? 任务描述: 我想要两张一模一样的地图!我想要双子地图!我想要孪生姐妹地图! 好好好,统统满足大家! 在这里我不需要使用百度地图API提供的地图缩略图控件 ...
- Linq to Sql : 动态构造Expression进行动态查询
原文:Linq to Sql : 动态构造Expression进行动态查询 前一篇在介绍动态查询时,提到一个问题:如何根据用户的输入条件,动态构造这个过滤条件表达式呢?Expression<Fu ...
- intellij idea 13&14 插件推荐及快速上手建议 (已更新!)
原文:intellij idea 13&14 插件推荐及快速上手建议 (已更新!) 早些年 在外企的时候,公司用的是intellij idea ,当时也是从eclipse.MyEclipse转 ...
- 命令行配置源和安装本地rpm包
因为Firefox的在写博客时提交代码会丢失缩进,所以打算安装Chrome来写博,还不错,学到了两条命令- [shell] sudo yum-config-manager --add-repo=htt ...
- 如何把va_list可变参数传送到下一级函数中(如传送到printf)
最近我在一个LCD上想实现打印格式化字符串的功能,实现这样的功能可有两种方式: 一 最直接的就是自己去解析类似于printf功能的一个函数: 二 比较简单的方法是使用已有的sprintf功能,把格式化 ...
- xheditor 进阶
xhEditor提供两种方式初始化编辑器: 方法1:利用class属性来初始化和传递各种初始化参数,例: class="xheditor {skin:'default'}" 方法 ...
- WebIM(5)----将WebIM嵌入到页面中
在之前的文章中,已经开发了一个简单的WebIM,但是这个WebIM是在独立的页面中的,今天发布的WebIM是一个可以嵌入到自己网页中的版本,你只需添加少量的代码,就可以在页面中嵌入一个WebIM.不过 ...