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,一经查实,立即删除!

相关文章

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

哈喽&#xff0c;您好&#xff01;我是原呵呵&#xff0c;点点关注吧&#xff0c;更多精彩内容等着您M1 MacBook Air是一款神奇的笔记本电脑。不是因为它看起来特别新。这是一个奇迹&#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;在国人眼中就如同破烂一般存在。而在国外人心中…

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;感兴趣的读者可以自…

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

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

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方式运行不用担心文件会在不小…

java 枚举(enum) 全面解读

枚举类型是单例模式的。你需要实例化一次&#xff0c;然后再整个程序之中就可以调用他的方法和成员变量了。 枚举类型使用单例模式是因为他的值是固定的&#xff0c;不需要发生改变。 简介 枚举是Java1.5引入的新特性&#xff0c;通过关键字enum来定义枚举类。枚举类是一种特殊…

修改表名_面试官:如何批量修改mysql表字段、表、数据库字符集和排序规则

概述目前数据库字符集统一用的utf8&#xff0c;由于项目需要&#xff0c;引进了表情&#xff0c;但是utf8mb5才支持表情字符&#xff0c;所以需统一修改数据库字符集&#xff0c;下面介绍批量修改数据库字符集的办法。修正顺序是字段级别>表级别>库级别。一、批量修改整个…

Maven命令 install 和 package的区别

Maven命令 install 和 package的区别 Maven是目前十分流行的项目构建工具以及依赖解决工具&#xff0c;其提供的常用指令中有两个很容易引起使用者的疑惑&#xff0c; 那就是 install 和 package &#xff0c; 那么这两个命令到底有啥区别呢&#xff1f; Maven install 安装…

如何重启_消费市场按下重启键,企业该如何提前布局

2020广发卡携手企业和消费者&#xff0c;共同按下重启键&#xff0c;让我们放下包袱&#xff0c;轻松前行。当疫情结束后&#xff0c;你想做什么&#xff1f;也许是去见想见的人&#xff0c;和他一起去吃想吃的美食&#xff1b;也许是约上三五好友&#xff0c;或带着最亲的家人…

Linux中使用netstat命令的基本操作,排查端口号的占用情况

Linux中netstat命令详解 Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具&#xff0c;它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据&#xff0c;一般用于检验本机各端口的网络连接情…

与context的关系_Android-Context

一.简介Context 翻译为上下文环境&#xff0c;是一个应用程序环境信息的接口。如果以 Android 系统角度来看可以理解为某一与操作系统的交互的具体场景&#xff0c;比如 Activity 的具体功能&#xff0c;Service 的后台运行等。如果以程序的角度看&#xff0c;Context 是一个抽…