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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在MATLAB中,NURBS(非均匀有理B样条)是一种强大的数学工具,用于表示和处理复杂的曲线和曲面。NURBS在计算机图形学、CAD(计算机辅助设计)、CAM(计算机辅助制造)等领域有着广泛的应用。下面将详细探讨MATLAB中NURBS的绘制方法以及相关知识点。 我们需要理解NURBS的基本概念。NURBS是B样条(B-Spline)的一种扩展,其特殊之处在于引入了权重因子,使得曲线和曲面可以在不均匀的参数空间中进行平滑插值。这种灵活性使得NURBS在处理非均匀数据时尤为有效。 在MATLAB中,可以使用`nurbs`函数创建NURBS对象,它接受控制点、权值、 knot向量等参数。控制点定义了NURBS曲线的基本形状,而knot向量决定了曲线的平滑度和分布。权值则影响曲线通过控制点的方式,大的权值会使曲线更靠近该点。 例如,我们可以使用以下代码创建一个简单的NURBS曲线: ```matlab % 定义控制点 controlPoints = [1 1; 2 2; 3 1; 4 2]; % 定义knot向量 knotVector = [0 0 0 1 1 1]; % 定义权值(默认为1,如果未指定) weights = ones(size(controlPoints,1),1); % 创建NURBS对象 nurbsObj = nurbs(controlPoints, weights, knotVector); ``` 然后,我们可以用`plot`函数来绘制NURBS曲线: ```matlab plot(nurbsObj); grid on; ``` `data_example.mat`可能包含了一个示例的NURBS数据集,其中可能包含了控制点坐标、权值和knot向量。我们可以通过加载这个数据文件来进一步研究NURBS的绘制: ```matlab load('data_example.mat'); % 加载数据 nurbsData = struct2cell(data_example); % 转换为cell数组 % 解析数据 controlPoints = nurbsData{1}; weights = nurbsData{2}; knotVector = nurbsData{3}; % 创建并绘制NURBS曲线 nurbsObj = nurbs(controlPoints, weights, knotVector); plot(nurbsObj); grid on; ``` MATLAB还提供了其他与NURBS相关的函数,如`evalnurbs`用于评估NURBS曲线上的点,`isoparm`用于生成NURBS曲面上的等参线,以及`isocurve`用于在NURBS曲面上提取特定参数值的曲线。这些工具对于分析和操作NURBS对象非常有用。 MATLAB中的NURBS功能允许用户方便地创建、编辑和可视化复杂的曲线和曲面。通过对控制点、knot向量和权值的调整,可以精确地控制NURBS的形状和行为,从而满足各种工程和设计需求。通过深入理解和熟练掌握这些工具,可以在MATLAB环境中实现高效的NURBS建模和分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值