jquery + ashx DropDownList 二级
2011-06-08 16:54 沐海 阅读(423) 评论(0) 编辑 收藏 举报此贴转载。思路很好啊。可是依旧没解决模板问题。
不过比我以前的那个通过 aspx+JSON+JS的方法好一点。
1.ashx专门做 操作。
ashx 跟 (页面)aspx、(Web 服务)asmx 一样,都实现了 IHttpHandler,也就是说他们都能够处理 用户的请求;ASPX 经过一系列动作(验证请求、模块处理、页面生命周期等)最后 返回的个页面。ashx 同样能够处理请求,不同的是;他不必做一系列动作、不用经过一连串的事件处理、一大堆的控件状态管理(加载并解析ViewState,还原、更新控件的值、保存ViewState等),直接返回操作结果,也就不用耗费更多的服务器资源了;返回的格式可以灵活处理。一般来说,获取、处理动态生成的图片,像验证码 、AJAX 动态获取数据等问题都可以并且最好是用 ashx 来处理。
2.jQ可以比较好的拿到一些被编译成 “<”或者“ ” 这样的 HTML数据显示 。val() 和 HTML();
前台:

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

<%@ 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!欢迎交流!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述