代码改变世界

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可以比较好的拿到一些被编译成   “&lt”或者“&nbsp”  这样的 HTML数据显示  。val() 和 HTML();

 

前台:

 

Code
<%@ 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 

Code
<%@ 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;
}
}

}

转载声明:这是个转载的。

记录生活、工作、学习点滴!
E-Mail:mahaisong@hotmail.com 欢迎大家讨论。
沐海博客园,我有一颗,卓越的心!