ASP .NET DropDownList多级联动事件

2023-12-20 00:48

本文主要是介绍ASP .NET DropDownList多级联动事件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

思路

假如有三级省、市、区,先加载出所有省
选择省之后,加载出该省所有市
选择市之后,加载出该市所有区
重新选择省,则清空市和区
重新选择市,则清空区
想好数据结构,不同的数据结构做法不同

例子

数据结构

public class Area
{public int PKID { get; set; }public int ParentID { get; set; }public string Name { get; set; }
}

测试数据

1

前台

<div><span>地区搜索:</span>@Html.DropDownList("Provinces", new SelectList(ViewBag.Province as System.Collections.IEnumerable, "PKID", "Name"), "请选择")&nbsp;&nbsp;&nbsp;&nbsp;<select id="Citys"><option value="">请选择</option></select>&nbsp;&nbsp;&nbsp;&nbsp;<select id="Districts"><option value="">请选择</option></select>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<button onclick="GetResult()">获取当前选择</button>
</div>
<script>$("#Provinces").change(function () {var self = $(this);var parentId = self.val();if (parentId != "") {$("#Province").val(self.find("option:selected").val());var option = GetRegion(parentId);$("#Citys").html(option);$("#Districts").html("<option value=''>请选择</option>");} else {$("#Citys").html("<option value=''>请选择</option>");$("#Districts").html("<option value=''>请选择</option>");}});$("#Citys").change(function () {var self = $(this);var parentId = self.val();if (parentId != "") {$("#City").val(self.find("option:selected").val());$("#RegionID").val(parentId);var option = GetRegion(parentId);$("#Districts").html(option);} else {$("#Districts").html("<option value=''>请选择</option>");}});function GetRegion(ParentID) {var option = "<option value=''>请选择</option>";$.ajax({type: "get",url: "/AboutDB/GetArea",data: { "ParentID": ParentID },async: false,success: function (city) {//拼接下拉框$.each(city, function (index, item) {option += "<option value=" + item.PKID + ">" + item.Name + "</option>";});}});//返回下拉框htmlreturn option;}function GetResult(){var Province = $("#Provinces").find("option:selected").text();var City = $("#Citys").find("option:selected").text();var District = $("#Districts").find("option:selected").text();layer.alert(Province + "-" + City + "-" + District);}
</script>

后台

//加载页面,先查出省列表
public ActionResult Area()
{ViewBag.Province = new AboutDBManager().GetArea(0);return View();
}
//根据ParentID查询子集
public ActionResult GetArea(int ParentID)
{var regions = new AboutDBManager().GetArea(ParentID);return Json(regions, JsonRequestBehavior.AllowGet);
}
public List<Area> GetArea(int ParentID)
{string sql =string.Format("select PKID,ParentID,Name from area where ParentID={0}",ParentID);return DAL.DbManager<Area>.Instance.QueryBySQL(sql).ToList();
}

这篇关于ASP .NET DropDownList多级联动事件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/514302

相关文章

C#如何动态创建Label,及动态label事件

《C#如何动态创建Label,及动态label事件》:本文主要介绍C#如何动态创建Label,及动态label事件,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#如何动态创建Label,及动态label事件第一点:switch中的生成我们的label事件接着,

spring @EventListener 事件与监听的示例详解

《spring@EventListener事件与监听的示例详解》本文介绍了自定义Spring事件和监听器的方法,包括如何发布事件、监听事件以及如何处理异步事件,通过示例代码和日志,展示了事件的顺序... 目录1、自定义Application Event2、自定义监听3、测试4、源代码5、其他5.1 顺序执行

基于.NET编写工具类解决JSON乱码问题

《基于.NET编写工具类解决JSON乱码问题》在开发过程中,我们经常会遇到JSON数据处理的问题,尤其是在数据传输和解析过程中,很容易出现编码错误导致的乱码问题,下面我们就来编写一个.NET工具类来解... 目录问题背景核心原理工具类实现使用示例总结在开发过程中,我们经常会遇到jsON数据处理的问题,尤其是

Node.js net模块的使用示例

《Node.jsnet模块的使用示例》本文主要介绍了Node.jsnet模块的使用示例,net模块支持TCP通信,处理TCP连接和数据传输,具有一定的参考价值,感兴趣的可以了解一下... 目录简介引入 net 模块核心概念TCP (传输控制协议)Socket服务器TCP 服务器创建基本服务器服务器配置选项服

java poi实现Excel多级表头导出方式(多级表头,复杂表头)

《javapoi实现Excel多级表头导出方式(多级表头,复杂表头)》文章介绍了使用javapoi库实现Excel多级表头导出的方法,通过主代码、合并单元格、设置表头单元格宽度、填充数据、web下载... 目录Java poi实现Excel多级表头导出(多级表头,复杂表头)上代码1.主代码2.合并单元格3.

Python中的异步:async 和 await以及操作中的事件循环、回调和异常

《Python中的异步:async和await以及操作中的事件循环、回调和异常》在现代编程中,异步操作在处理I/O密集型任务时,可以显著提高程序的性能和响应速度,Python提供了asyn... 目录引言什么是异步操作?python 中的异步编程基础async 和 await 关键字asyncio 模块理论

.NET利用C#字节流动态操作Excel文件

《.NET利用C#字节流动态操作Excel文件》在.NET开发中,通过字节流动态操作Excel文件提供了一种高效且灵活的方式处理数据,本文将演示如何在.NET平台使用C#通过字节流创建,读取,编辑及保... 目录用C#创建并保存Excel工作簿为字节流用C#通过字节流直接读取Excel文件数据用C#通过字节

禁止平板,iPad长按弹出默认菜单事件

通过监控按下抬起时间差来禁止弹出事件,把以下代码写在要禁止的页面的页面加载事件里面即可     var date;document.addEventListener('touchstart', event => {date = new Date().getTime();});document.addEventListener('touchend', event => {if (new

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get