dropdownlist ajax联动,asp.net省市三级联动的DropDownList+Ajax的三种框架(aspnet/Jquery/ExtJs)示例...

本文主要列举了省市三级联动的DropDownList+Ajax的三种框架(aspnet/Jquery/ExtJs)示例。前段时间需要作一个的Web前端应用,需要用多个框架,一个典型的应用场景是省市三级联动,基于此应用,特将三种主要的ajax框架略作整理,方便有需要的朋友查阅。

在示例之前,我们先设置一个演示数据源,新建一个项目,项目结构如图:

20100618012619294.gif

主要文件如下:

AreaModel.cs:

using System;

using System.Collections.Generic;

namespace Downmoon.Framework.Model

{

#region PopularArea

public class Area

{

private string m_Area_ID;

///

/// 地区编号

///

public string Area_ID

{

get { return m_Area_ID; }

set { m_Area_ID = value; }

}

private string m_Area_Name;

///

/// 地区名称

///

public string Area_Name

{

get { return m_Area_Name; }

set { m_Area_Name = value; }

}

private double m_Area_Order;

///

/// 排序

///

public double Area_Order

{

get { return m_Area_Order; }

set { m_Area_Order = value; }

}

private int m_Area_Layer;

///

/// 层级

///

public int Area_Layer

{

get { return m_Area_Layer; }

set { m_Area_Layer = value; }

}

private string m_Area_FatherID;

///

/// 父级ID

///

public string Area_FatherID

{

get { return m_Area_FatherID; }

set { m_Area_FatherID = value; }

}

public Area() { }

public Area(string id, string name, double order, int layer, string father)

{

this.Area_ID = id;

this.Area_Name = name;

this.m_Area_Order = order;

this.m_Area_Layer = layer;

this.m_Area_FatherID = father;

}

}

#endregion

}

AreaControl.cs:

using System;

using System.Collections.Generic;

using Downmoon.Framework.Model;

namespace Downmoon.Framework.Controllers

{

public class AreaList : IArea

{

// Area singleton

private static AreaList instance;

public static AreaList Instance

{

get

{

if (AreaList.instance == null)

{

AreaList.instance = new AreaList();

}

return AreaList.instance;

}

}

public List GetAreaList()

{

List Areas = new List();

Areas.Add(new Area("110000", "北京市", 0, 1, "000000"));

Areas.Add(new Area("110100", "市辖区", 0, 2, "110000"));

Areas.Add(new Area("110101", "东城区", 0, 3, "110100"));

Areas.Add(new Area("110102", "西城区", 0, 3, "110100"));

Areas.Add(new Area("110103", "崇文区", 0, 3, "110100"));

Areas.Add(new Area("330000", "浙江省", 0, 1, "000000"));

Areas.Add(new Area("330100", "杭州市", 0, 2, "330000"));

Areas.Add(new Area("330200", "宁波市", 0, 2, "330000"));

Areas.Add(new Area("330102", "上城区", 0, 3, "330100"));

Areas.Add(new Area("330103", "下城区", 0, 3, "330100"));

Areas.Add(new Area("330104", "江干区", 0, 3, "330100"));

Areas.Add(new Area("330105", "拱墅区", 0, 3, "330100"));

Areas.Add(new Area("330106", "西湖区", 0, 3, "330100"));

Areas.Add(new Area("330203", "海曙区", 0, 3, "330200"));

Areas.Add(new Area("330204", "江东区", 0, 3, "330200"));

Areas.Add(new Area("330205", "江北区", 0, 3, "330200"));

Areas.Add(new Area("330206", "北仑区", 0, 3, "330200"));

Areas.Add(new Area("330211", "镇海区", 0, 3, "330200"));

return Areas;

}

public List GetAreaListFindByParentID(string filter)

{

return GetAreaList().FindAll(

delegate(Area ar)

{

return ar.Area_FatherID == filter;

}

);

}

}

}

Factory.cs

using System;

using System.Collections.Generic;

//using Downmoon.Framework.Model;

namespace Downmoon.Framework.Controllers

{

public class Factory

{

public static IArea GetAreaController()

{

return AreaList.Instance;

}

}

}

IArea.cs

using System;

using System.Collections.Generic;

using System.Text;

using Downmoon.Framework.Model;

namespace Downmoon.Framework.Controllers

{

public interface IArea

{

List GetAreaList();

List GetAreaListFindByParentID(string filterID);

}

}

一、基于aspnet自带的Ajax框架,主要好处是与asp.net完全集成,无需写过多的 js。缺点是在framework2下需作一些设置,在Framework 4下无需设置。

Framework 2:

需首先在web.config文件中作配置:

type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

前台页面:

请选择省/市/区:

AutoPostBack="true" onselectedindexchanged="dpProvince_SelectedIndexChanged" />

onselectedindexchanged="dpCity_SelectedIndexChanged" />

/>

正在查询,请稍候……………………

Framework 4:与代码完全一样,只是无需在web.config中作配置。

如图:

20100618013232492.gif

二、基于JQuery1.4.1的Ajax框架,主要好处是与后续版本的asp.net完全集成。

基于ashx作一个 Request,主要代码:

using System;

using System.Collections.Generic;

using System.Web;

using Downmoon.Framework.Controllers;

using Downmoon.Framework.Model;

using System.Text;

namespace dropdown_JQuery14_Net2

{

///

/// Summary description for AjaxRequest

///

public class AjaxRequest : IHttpHandler

{

public void ProcessRequest(HttpContext context)

{

string Area_FatherID = string.Empty;

if (context.Request["pid"] != null)

{ Area_FatherID = context.Request["pid"].ToString(); }

string parentId = string.Empty;

//mydbDataContext db = new mydbDataContext();

//根据传过来的Value值 进行查询

//List list = db.ChinaStates.Where(c => c.ParentAreaCode == strId).ToList();

List list = Factory.GetAreaController().GetAreaListFindByParentID(Area_FatherID);

context.Response.ContentType = "application/json";

context.Response.ContentEncoding = Encoding.UTF8;

context.Response.Write(ListToJson(list));

context.Response.End();

}

public string ListToJson(List list)

{

StringBuilder sb = new StringBuilder();

if (list != null)

{

sb.Append("[");

for (int i = 0; i < list.Count; i++)

{

sb.Append("{");

sb.Append("\"Area_ID\":\"" + list[i].Area_ID + "\",");

sb.Append("\"Area_Name\":\"" + list[i].Area_Name + "\"");

//sb.Append("\"Area_FatherID\":\"" + list[i].Area_FatherID + "\"");

if (i != list.Count - 1)

{

sb.Append("},");

}

}

}

sb.Append("}");

sb.Append("]");

return sb.ToString();

}

public bool IsReusable

{

get

{

return false;

}

}

}

}

前台:aspx

#dpCity

{

display: none;

position: relative;

}

#dpArea

{

display: none;

position: relative;

}

-->

{

display: none;

position: relative;

}

#dpArea

{

display: none;

position: relative;

}

请选择省/市/区:

20100618013343403.gif

20100618013351813.gif

三、基于ExtJS 3.2的Ajax框架。

后台ashx:

using System;

using System.Collections.Generic;

using System.Web;

using Downmoon.Framework.Controllers;

using Downmoon.Framework.Model;

using System.Text;

namespace dropdown_ExtJS32_Net2.Ajax

{

///

/// Summary description for GetAreaXml

///

public class GetAreaXml : IHttpHandler

{

//string baseCode = "000000";

public void ProcessRequest(HttpContext context)

{

string parentId = "000000";

if (context.Request["pid"] != null)

{

parentId = context.Request["pid"].ToString();

}

//parentId = (parentId.Length > 0) ? parentId : "000000";

string parentId2 = "000000";

if (context.Request["pid2"] != null)

{

parentId2 = context.Request["pid2"].ToString();

}

#region tony 2010.2.7 update

List list = new List();

//if (parentId.Length > 0)

//{

list = Factory.GetAreaController().GetAreaListFindByParentID(parentId);

//}

else if (parentId2.Length > 0)

{

list = Factory.GetAreaController().GetAreaListFindByParentID(parentId2);

}

#endregion

context.Response.AddHeader("Cache-Control", "no-cache, must-revalidate");

context.Response.ContentEncoding = System.Text.Encoding.UTF8;

context.Response.ContentType = "text/html";

StringBuilder sb = new StringBuilder();

for (int i = 0; i < list.Count; i++)

{

sb.Append("{\"Area_Name\":\"" + list[i].Area_Name + "\",");

sb.Append("\"Area_ID\":\"" + list[i].Area_ID + "\"},");

}

string json = sb.ToString().TrimEnd(',');

context.Response.Write("{\"Results\":[" + json + "]}");

}

public bool IsReusable

{

get

{

return false;

}

}

}

}

前台页面.aspx

demo a dropdownlist by extjs 3.2

请选择

效果如图:

20100618013737565.gif

20100618013745727.gif

邀月注:本文版权由邀月和CSDN共同所有,转载请注明出处。

助人等于自助! 3w@live.cn

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/555361.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

判断String为空 StringUtils工具 isNotEmpty与isNotBlank区别

如何判断String是否为空&#xff1f; 判断Strings是否为空&#xff0c;很多人第一反应就是 str ! null && str.length > 0。可能已经忘了StringUtils工具包了。 工具包中有 isNotEmpty 和isNotBlank 两个方法&#xff0c;都可以判断String是否为空&#xff0c;区别…

苹果笔记本电脑亮度无法调节_苹果MacBook AirM1评测:M1芯片给您不一样的体验

哈喽&#xff0c;您好&#xff01;我是原呵呵&#xff0c;点点关注吧&#xff0c;更多精彩内容等着您M1 MacBook Air是一款神奇的笔记本电脑。不是因为它看起来特别新。这是一个奇迹&#xff0c;虽然它从外观上跟以前看起来没啥区别。它与以前运行相同的操作系统&#xff0c;并…

个人用户不得开设服务器对外提供信息服务,北京大学网络安全知识温馨提示

编者按&#xff1a;在当今时代&#xff0c;网络已成为生活的必需品&#xff0c;是学习和工作的重要支撑&#xff0c;不可或缺。网络越是重要&#xff0c;网络安全就越重要。网络安全无小事&#xff0c;关乎学校发展和全局&#xff0c;也与每一名师生员工的利益息息相关。为守护…

POI读取Excel文件时,row.getCell(0).getStringCellValue()报错:数字转换异常

在进行关键字驱动测试框架的搭建时&#xff0c;我们可能会遇到当单元格里的内容是手机号或者密码等数字时使用row.getCell(0).getStringCellValue()这个方法是会报错的&#xff0c;因为这牵扯到方法过时的原因&#xff1a; 所以我们可以使用以下的方法解决这个问题&#xff1a…

wps合并所有sheet页_表格高级筛选、表格合并,让表格处理事半功倍

今天给大家介绍WPS最受欢迎的2个表格功能&#xff0c;表格合并和表格高级筛选。这都是能够切实让工作事半功倍的功能&#xff0c;一定要掌握哦&#xff01;一、表格合并当我们有多个表格的内容需要合并到一个表格中&#xff0c;很多人会采取复制粘贴的方式。表格数量少时可能影…

Java代理设计模式(Proxy)的具体实现:静态代理和动态代理

Java代理设计模式(Proxy)的具体实现&#xff1a;静态代理和动态代理 实现方式一&#xff1a;静态代理静态代理方式的优点静态代理方式的缺点Java动态代理实现方式一&#xff1a;InvocationHandlerJava动态代理实现方式二&#xff1a;CGLIB用CGLIB实现Java动态代理的局限性 面…

golang 大数据平台_大数据平台是什么?有哪些功能?如何搭建大数据平台?

大数据平台是为了满足企业对于数据的各种要求而产生的。大数据平台&#xff1a;是指以处理海量数据存储、计算及不间断流数据实时计算等场景为主的一套基础设施。典型的包括Hadoop系列、Spark、Storm、Flink以及Flume/Kafka等集群。既可以采用开源平台&#xff0c;也可以采用华…

Spring 官方证实:框架爆大漏洞,JDK 9 及以上版本均受影响

继 Log4j 2 之后&#xff0c;听闻 Java 再次遭到漏洞攻击&#xff0c;这一次&#xff0c;似乎情况也更为严重&#xff0c;因为受到影响的是 Java 平台的开源全栈应用程序框架和控制反转容器实现——Spring 家族&#xff0c;而且网传漏洞还不止一个。 一直以来&#xff0c;Spri…

有关家居产品设计的外国专著_为啥外国的二手家具被称为vintage,中国就叫破烂?差在哪儿了?...

如果你细细观察国外的家居市场&#xff0c;发现跳蚤市场特别流行于各个国家。无论是美国、英国、法国&#xff0c;一些普通民众需要购买家具会优先考虑去跳蚤市场看看。所谓的跳蚤市场就是我们国内俗称的二手家具市场&#xff0c;在国人眼中就如同破烂一般存在。而在国外人心中…

网页前端(Html)video播放m3u8(HLS)Vue使用video.js播放m3u8

网页前端(Html)video播放m3u8(HLS) HLS (HTTP Live Streaming)是Apple公司研发的流媒体传输技术&#xff0c;包括一个m3u8的索引文件、多个ts分片文件和key加密串文件。这项技术主要应用于点播和直播领域。 开源JS库&#xff08;Github&#xff09;&#xff1a; 【video.js】…

为什么要用枚举实现单例模式(避免反射、序列化问题)

1 引言 ​ 相信如果能看到我这篇博客的小伙伴&#xff0c;肯定都看过Joshua Bloch大神说过的这句话&#xff1a;“单元素的枚举类型已经成为实现Singleton的最佳方法”。其实&#xff0c;第一次读到这句话&#xff0c;我连其中说的单元素指什么都不知道&#xff0c;尴尬。后来…

mysql挂载数据卷_记一次生产数据库数据文件进行分区转移

概述由于之前同事没有对磁盘分区做规划&#xff0c;可以看到数据和系统是在同个分区的&#xff0c;没有单独规划一个数据分区给数据库&#xff0c;还有个分区是640G没有用上。下面简单介绍一下mysql数据库数据文件的转移过程。1、新建数据分区篇幅需要&#xff0c;以下从简。。…

java计算一个多边形的重心_2D凸多边形碰撞检测算法(二) - GJK(上)

2D凸多边形碰撞检测算法&#xff08;二&#xff09; - GJK&#xff08;上&#xff09;原理在 Narrow Phase 精细碰撞检测中&#xff0c;除了 SAT &#xff0c;另外一个就是 GJK&#xff08;Gilbert–Johnson–Keerthi&#xff09;算法。它足够高效&#xff0c;且很容易了解它是…

高性能对象存储MinIO学习API使用使用api创建文件夹MinIO工具类

MinIO 是GlusterFS创始人之一Anand Babu Periasamy发布的开源项目&#xff0c;基于Apache V2 license 100% 开放源代码。MinIO采用Golang实现&#xff0c;客户端支持Java、Python、Javacript、Golang语言等。 其设计的主要目标是作为私有云对象存储的标准方案。非常适合于存储…

rmi远程反序列化rce漏洞_Apache Dubbo Provider默认反序列化远程代

背景近日&#xff0c;Apache Dubbo披露了Provider默认反序列化远程代码执行漏洞(CVE-2020-1948)&#xff0c;攻击者可构造恶意请求&#xff0c;从而执行任意代码。具体信息如上图所示。在官方邮件中&#xff0c;漏洞报告者还提供了官方的PoC脚本&#xff0c;感兴趣的读者可以自…

Java非对称加密KeyPairGenerator类

Java加密的常用的加密算法类型有三种 1单向加密&#xff1a; 也就是不可逆的加密&#xff0c;例如MD5,SHA,HMAC 2对称加密&#xff1a; 也就是加密方和解密方利用同一个秘钥对数据进行加密和解密&#xff0c;例如DES&#xff0c;PBE等等 3非对称加密&#xff1a; 非对称加…

操作痕迹包括那些_高级消防设施操作员专题之:走近气体灭火系统

按照《消防设施操作员职业技能标准》的规定&#xff0c;安装有气体灭火系统的单位&#xff0c;应当配置高级消防设施操作员。由于这些单位通常情况下都是消防安全重点单位、火灾高危单位&#xff0c;可以预见&#xff0c;高级消防设施操作员作为消防行业的高技能人才&#xff0…

请求头Content-Type:application/json,java后端如何接收数据

Content-Type的类型 1.application/x-www-form-urlencoded ​ 常用RequestParam(“参数名称”)也可以不写使用springMvc自己根据参数名称自动赋值 2.multipart/form-data ​ 这个和上个差不多吧&#xff0c;如果是multipart类型的文件&#xff0c;记得在后端接收参数是直接…

flutter不支持热更新_Flutter 在安卓上可以实现热更新了

本文由 句号君 授权投稿原文链接&#xff1a;https://blog.csdn.net/qizewei123/article/details/102963340Flutter 官方在 GitHub 上声明是暂时不支持热更新的&#xff0c;但是在 Flutter 的源码里&#xff0c;是有一部分预埋的热更新相关的代码&#xff0c;并且通过一些我们自…

jar包在windows后台运行,通过.bat文件

jar包在windows后台运行.bat 一、IDEA打成jar包 这里不再赘述 二、在windows后台运行jar包 在cmd中可以使用java -jar xxxxx.jar方式运行一个jar文件&#xff0c;这种方法运行一旦关闭该cmd界面就会停止运行。编辑.bat文件&#xff0c;使用javaw方式运行不用担心文件会在不小…