jquery + ashx DropDownList 二级
2011-06-08 16:54 沐海 阅读(420) 评论(0) 编辑 收藏 举报此贴转载。思路很好啊。可是依旧没解决模板问题。
不过比我以前的那个通过 aspx+JSON+JS的方法好一点。
1.ashx专门做 操作。
ashx 跟 (页面)aspx、(Web 服务)asmx 一样,都实现了 IHttpHandler,也就是说他们都能够处理 用户的请求;ASPX 经过一系列动作(验证请求、模块处理、页面生命周期等)最后 返回的个页面。ashx 同样能够处理请求,不同的是;他不必做一系列动作、不用经过一连串的事件处理、一大堆的控件状态管理(加载并解析ViewState,还原、更新控件的值、保存ViewState等),直接返回操作结果,也就不用耗费更多的服务器资源了;返回的格式可以灵活处理。一般来说,获取、处理动态生成的图片,像验证码 、AJAX 动态获取数据等问题都可以并且最好是用 ashx 来处理。
2.jQ可以比较好的拿到一些被编译成 “<”或者“ ” 这样的 HTML数据显示 。val() 和 HTML();
前台:
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="javascript/jquery-1.3.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
<!--
$(function() {
$("#ddlMenuOne").append(
"<option value='-1' selected='selected'>请选择...</option>");
ddlMenuTwoInit();
$.getJSON(
"DDLMenu.ashx",
{ menuOneId: $("#ddlMenuOne").val() },
function(json) {
$.each(json, function(i) {
$("#ddlMenuOne").append(
"<option value='" + json[i].Id + "'>"
+ json[i].MenuOneName + "</option>"
);
});
});
$("#ddlMenuOne").change(function(event) {
if ($("#ddlMenuOne").val() !== "-1") {
$.getJSON(
"DDLMenu.ashx",
{ menuOneId: $("#ddlMenuOne").val() },
function(json) {
ddlMenuTwoInit();
$.each(json, function(i) {
$("#ddlMenuTwo").append(
"<option value='" + json[i].Id + "'>"
+ json[i].MenuTwoName + "</option>"
);
});
});
}
else {
ddlMenuTwoInit();
}
});
});
function ddlMenuTwoInit() {
$("#ddlMenuTwo").html("").append(
"<option value='-1' selected='selected'>请选择...</option>");
}
//-->
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DropDownList ID="ddlMenuOne" runat="server">
</asp:DropDownList>
<br />
<asp:DropDownList ID="ddlMenuTwo" runat="server">
</asp:DropDownList>
</div>
<ul id="list">
</ul>
</form>
</body>
</html>
后台 ashx
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
<%@ WebHandler Language="C#" Class="DDLMenu" %>
using System;
using System.Web;
using System.Collections.Generic;
using System.Web.Script.Serialization;
using System.ServiceModel.Dispatcher;
public class DDLMenu : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
int menuOneId = Convert.ToInt32(context.Request.QueryString["menuOneId"]);
JsonQueryStringConverter jq = new JsonQueryStringConverter();
//JavaScriptSerializer serializer = new JavaScriptSerializer();
//string data = serializer.Serialize(list);
string data = "";
if (menuOneId == -1)
{
List<MenuOne> list = new List<MenuOne>();
list.Add(new MenuOne { Id = 1, MenuOneName = "城市" });
list.Add(new MenuOne { Id = 2, MenuOneName = "年份" });
list.Add(new MenuOne { Id = 3, MenuOneName = "蔬菜" });
data = jq.ConvertValueToString(list, typeof(List<MenuOne>));
}
else
{
List<MenuTwo> list = new List<MenuTwo>();
list.Add(new MenuTwo { Id = 1, MenuOneId = 1, MenuTwoName = "淮安" });
list.Add(new MenuTwo { Id = 2, MenuOneId = 1, MenuTwoName = "南京" });
list.Add(new MenuTwo { Id = 3, MenuOneId = 1, MenuTwoName = "盐城" });
list.Add(new MenuTwo { Id = 4, MenuOneId = 1, MenuTwoName = "苏州" });
list.Add(new MenuTwo { Id = 5, MenuOneId = 1, MenuTwoName = "无锡" });
list.Add(new MenuTwo { Id = 6, MenuOneId = 1, MenuTwoName = "镇江" });
list.Add(new MenuTwo { Id = 7, MenuOneId = 1, MenuTwoName = "泰州" });
list.Add(new MenuTwo { Id = 8, MenuOneId = 2, MenuTwoName = "2000" });
list.Add(new MenuTwo { Id = 9, MenuOneId = 2, MenuTwoName = "2001" });
list.Add(new MenuTwo { Id = 10, MenuOneId = 2, MenuTwoName = "2002" });
list.Add(new MenuTwo { Id = 11, MenuOneId = 2, MenuTwoName = "2003" });
list.Add(new MenuTwo { Id = 12, MenuOneId = 2, MenuTwoName = "2004" });
list.Add(new MenuTwo { Id = 13, MenuOneId = 2, MenuTwoName = "2005" });
list.Add(new MenuTwo { Id = 14, MenuOneId = 2, MenuTwoName = "2006" });
list.Add(new MenuTwo { Id = 15, MenuOneId = 3, MenuTwoName = "黄瓜" });
list.Add(new MenuTwo { Id = 16, MenuOneId = 3, MenuTwoName = "萝卜" });
list.Add(new MenuTwo { Id = 17, MenuOneId = 3, MenuTwoName = "白菜" });
list.Add(new MenuTwo { Id = 18, MenuOneId = 3, MenuTwoName = "猪肉" });
list.Add(new MenuTwo { Id = 19, MenuOneId = 3, MenuTwoName = "鸡腿" });
list.Add(new MenuTwo { Id = 20, MenuOneId = 3, MenuTwoName = "闫腾" });
list.Add(new MenuTwo { Id = 21, MenuOneId = 3, MenuTwoName = "黄鱼" });
List<MenuTwo> newList = new List<MenuTwo>();
int n = list.Count;
for (int i = 0; i < n; i++)
{
if (list[i].MenuOneId == menuOneId)
newList.Add(list[i]);
}
data = jq.ConvertValueToString(newList, typeof(List<MenuTwo>));
}
context.Response.Write(data);
}
public bool IsReusable
{
get
{
return false;
}
}
}
转载声明:这是个转载的。
本人声明:
个人主页:沐海(http://www.cnblogs.com/mahaisong)
以上文章都是经过本人设计实践和阅读其他文档得出。如果需要探讨或指教可以留言或加我QQ!欢迎交流!