.net+mvc 实现省 市 县 街道 小区 五级联动
界面效果如图:
View层代码:
@model Dlx.Models.ViewModel.System.Sys_BuildingView
@{
Layout = null;
IEnumerable<SelectListItem> prolist = ViewBag.ProvinceList;
}
<input type="hidden" id="hidProvinceId" name="hidProvinceId" value="@Model.provinceId" />
<input type="hidden" id="hidCityId" name="hidProvinceId" value="@Model.cityId" />
<input type="hidden" id="hidDistrictId" name="hidProvinceId" value="@Model.distId" />
<input type="hidden" id="hidStreetId" name="hidStreetId" value="@Model.streetId" />
<input type="hidden" id="hidNeighbId" name="hidNeighbId" value="@Model.neighborhoodId" />
<div class="width100 clearfix">
<div class="width33" style="position:relative">
@Html.DropDownList("ddlEProvince", prolist, "请选择省", new { @onChange = "ddlEOnChange('ddlEProvince','ddlECity','/Base/GetCitys',1)", @style = "margin-top:0;", @class = "IsError IsRequired", @MsgName = "省份" })
</div>
<div class="width33" style="position:relative;margin-top:20px;">
<select style="margin-top:0;" class="IsError IsRequired" id="ddlECity" MsgName="城市" οnchange="ddlEOnChange('ddlECity','ddlEDistrict','/Base/GetDistricts',2)"> <option value="">请选择城市</option></select>
</div>
<div class="width33" style="position:relative;margin-top:20px;">
<select style="margin-top:0;" class="IsError IsRequired" id="ddlEDistrict" MsgName="区/县" οnchange="ddlEOnChange('ddlEDistrict','ddlEStreet','/Base/GetStreets',3)"> <option value="">请选择区/县</option></select>
</div>
<div class="width33" style="position:relative;margin-top:20px;">
<select style="margin-top:0;" class="IsError IsRequired" id="ddlEStreet" MsgName="街道" οnchange="ddlEOnChange('ddlEStreet','ddlENeighborhood','/Base/GetNeighborhoods',4)"><option value="">请选择街道</option></select>
</div>
<div class="width33" style="position:relative;margin-top:20px;">
<select style="margin-top:0;" class="IsError IsRequired" id="ddlENeighborhood" MsgName="小区">
<option value="">请选择小区</option>
</select>
</div>
</div>
<div>所有JS代码:
//地区下拉框更改事件
function ddlEOnChange(ddlthis, ddlChild, url, level) {
ClearEditDDlArea(level);
ddlAreaOnChange(ddlthis, ddlChild, url)
}
省市县街道小区 下拉框公共JS
//所有区域下拉框change事件
//ddlthis: 当前下拉框ID; ddlChild: 子级下拉框id; url:后台获得数据URL,
function ddlAreaOnChange(ddlthis, ddlChild, url, backcall) {
var pid = $("#" + ddlthis).val();//
$.ajax({
url: url,
type: 'post',
data: { parentId: pid },
success: function (data) {
if (!data.HasError) {
$(data.Data).each(function (i, e) {
var option = '<option value="' + e.Value + '">' + e.Text + '</option>'
$("#" + ddlChild).append(option);
});
// 回调函数
if (backcall) {
backcall();
}
}
},
error: function (data) {
}
});
} //地区下拉清理事件
function ClearEditDDlArea(level) {
switch (level) {
case (1):
$("#ddlECity,#ddlEDistrict,#ddlEStreet,#ddlENeighborhood").empty();
$("#ddlECity").append('<option value="" >请选择城市</option>');
$("#ddlEDistrict").append('<option value="" >请选择区/县</option>');
$("#ddlEStreet").append('<option value="" >请选择街道</option>');
$("#ddlENeighborhood").append('<option value="" >请选择小区</option>');
break;
case (2):
$("#ddlEDistrict,#ddlEStreet,#ddlENeighborhood").empty();
$("#ddlEDistrict").append('<option value="" >请选择区/县</option>');
$("#ddlEStreet").append('<option value="" >请选择街道</option>');
$("#ddlENeighborhood").append('<option value="" >请选择小区</option>');
break;
case (3):
$("#ddlEStreet,#ddlENeighborhood").empty();
$("#ddlEStreet").append('<option value="" >请选择街道</option>');
$("#ddlENeighborhood").append('<option value="" >请选择小区</option>');
break;
case (4):
$("#ddlENeighborhood").empty();
$("#ddlENeighborhood").append('<option value="" >请选择小区</option>');
break;
default:
}
}控制器代码:获得数据源
/// <summary>
/// 获得省列表》
/// </summary>
/// <param name="provinceId"></param>
/// <returns></returns>
public IEnumerable<SelectListItem> GetProvinceList(int thisId = 0)
{
if (DLXStaticObject.ProvinceList == null || DLXStaticObject.ProvinceList.Count() == 0)
{
Bas_AreaBll arelBll = new Bas_AreaBll();
List<bas_area_provinces> province = arelBll.getProveinceList();
DLXStaticObject.ProvinceList = province;
}
IEnumerable<SelectListItem> items = DLXStaticObject.ProvinceList.Select(c => new SelectListItem
{ Value = c.id.ToString(), Text = c.provinceName, Selected = thisId == c.id ? true : false }).ToList();
return items;
}
/// <summary>
/// 获得市列表》根据省份ID查询
/// </summary>
/// <param name="provinceId"></param>
/// <param name="selectedValue">选中的值</param>
/// <returns></returns>
[HttpPost]
public ActionResult GetCitys(int parentId, int selectedValue = 0)
{
if (DLXStaticObject.CityList == null || DLXStaticObject.CityList.Count() == 0)
{
Bas_AreaBll arelBll = new Bas_AreaBll();
List<bas_area_city> citys = arelBll.getCityList();
DLXStaticObject.CityList = citys;
}
var _city = DLXStaticObject.CityList.Where(o => o.provinceId == parentId);
List<SelectListItem> items = _city.Select(c => new SelectListItem
{ Value = c.cityId.ToString(), Text = c.cityName, Selected = selectedValue == c.cityId ? true : false }).ToList();
return Json(new ReturnData<List<SelectListItem>>(false, "", items));
}
/// <summary>
/// 获得区列表》根据省区ID查询
/// </summary>
/// <param name="provinceId"></param>
/// <returns></returns>
[HttpPost]
public ActionResult GetDistricts(int parentId, int selectedValue = 0)
{
if (DLXStaticObject.DistrictList == null || DLXStaticObject.DistrictList.Count() == 0)
{
Bas_AreaBll arelBll = new Bas_AreaBll();
List<bas_area_district> distrits = arelBll.getDistriList();
DLXStaticObject.DistrictList = distrits;
}
var _district = DLXStaticObject.DistrictList.Where(o => o.cityId == parentId);
List<SelectListItem> items = _district.Select(c => new SelectListItem { Value = c.distId.ToString(), Text = c.districtName, Selected = selectedValue == c.distId ? true : false }).ToList();
return Json(new ReturnData<List<SelectListItem>>(false, "", items));
}
版权声明:本文为Candy_TangZhen原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。