轻松实现无刷新三级联动菜单[VS2005与AjaxPro]

最近做一些网站程序,经常要用到多个下拉菜单选择,看了介绍开始用AjaxPro这个控件,感觉效果不错。以前使用过MagicAjax,很久不用了忘记了,最麻烦的就是在虚拟目录的时候比较麻烦,呵呵,在网上也有很多,不过重要的地方经常没提醒新手,俺也是菜鸟,高手请忽略。看到这个AjaxPro使用比较简单,这次使用的是6.x的,最新的是7.x的,觉得6.0系列的方便,就选它了。
在重要的地方都有提示了,相信很容易看懂。
      首先在web.config添加这个接点 在<system.web>与</system.web>之间,如下:
   <system.web>
    <!--for Ajaxnet-->
    <httpHandlers>
      <add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>
    </httpHandlers>
    <!--其他设置-->
   </system.web>
     然后把AjaxPro.2.dll丢到bin文件夹,然后引用它就可以了。
    还是发代码吧,麻烦死了下面代码是 Default.aspx.cs的
None.gifusing System;
None.gif
using System.Data;
None.gif
using System.Configuration;
None.gif
using System.Data.OleDb;
None.gif
using System.Web;
None.gif
using System.Web.UI;
None.gif
using System.Web.UI.WebControls;
None.gif
using System.Web.UI.WebControls.WebParts;
None.gif
using System.Web.UI.HtmlControls;
None.gif
None.gif
public partial class _Default : System.Web.UI.Page
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{   
InBlock.gif    
InBlock.gif    
protected void Page_Load(object sender, EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        AjaxPro.Utility.RegisterTypeForAjax(
typeof(_Default)); //必要的
InBlock.gif
        if(!IsPostBack)BindDc();
ExpandedSubBlockEnd.gif    }

InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif    
/**//// <summary>
InBlock.gif    
/// 数据库连接
InBlock.gif    
/// </summary>
ExpandedSubBlockEnd.gif    
/// <returns></returns>

InBlock.gif    public OleDbConnection myConn()
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
string ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["dbpath"]);
InBlock.gif        OleDbConnection conn 
= new OleDbConnection(ConnStr);
InBlock.gif        
try
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            conn.Open();
InBlock.gif            
return conn;
ExpandedSubBlockEnd.gif        }

InBlock.gif        
catch
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif
InBlock.gif            
throw;
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockEnd.gif    }

InBlock.gif    
ExpandedSubBlockStart.gifContractedSubBlock.gif    
/**//// <summary>
InBlock.gif    
/// 获取下级分类
ExpandedSubBlockEnd.gif    
/// </summary>

InBlock.gif    [AjaxPro.AjaxMethod]
InBlock.gif    
public DataSet getNextClass(string cid)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
//因为不希望页面可以知道字段名称 所以 as txt,id as vol 如果是sql ser 可以用 = 
InBlock.gif        
//页面获取的 列名称 必须跟这个一同样 而且区分大小写 一般都是这个地方容易疏忽了
InBlock.gif        
//所以二级分类没变化
InBlock.gif
        string sql = @"select cname as txt,id as vol from webclass where parentid=" + cid;
InBlock.gif        
try
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
return getDs(sql);
ExpandedSubBlockEnd.gif        }

InBlock.gif        
catch
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
//throw;
InBlock.gif
            return null;
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockEnd.gif    }

InBlock.gif    
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif    
/**//// <summary>
InBlock.gif    
/// 返回一个DataSet
InBlock.gif    
/// </summary>
InBlock.gif    
/// <param name="SQL"></param>
ExpandedSubBlockEnd.gif    
/// <returns></returns>

InBlock.gif    public DataSet getDs(string SQL)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        OleDbConnection conn 
= myConn();
InBlock.gif        DataSet Ds 
= new DataSet();
InBlock.gif        OleDbDataAdapter Da 
= new OleDbDataAdapter(SQL, conn);
InBlock.gif        
try
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{   
InBlock.gif            Da.Fill(Ds);
InBlock.gif            
return Ds;
ExpandedSubBlockEnd.gif        }

InBlock.gif        
catch
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
return null;
InBlock.gif            
//throw;
ExpandedSubBlockEnd.gif
        }

InBlock.gif
ExpandedSubBlockEnd.gif    }

ExpandedSubBlockStart.gifContractedSubBlock.gif    
/**//// <summary>
InBlock.gif    
/// //数据绑定
ExpandedSubBlockEnd.gif    
/// </summary>

InBlock.gif    private void BindDc()
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
//第一个
InBlock.gif
        string sql = @"select * from webclass where Parentid=0";
InBlock.gif        ddl1.DataSource 
= getDs(sql);
InBlock.gif        ddl1.DataTextField 
= "cname";
InBlock.gif        ddl1.DataValueField 
= "id";
InBlock.gif        ddl1.DataBind();
InBlock.gif        
if (ddl1.DataSource != null) ddl1.Attributes.Add("onchange""showNext(this.options[selectedIndex].value,'ddl2');");
InBlock.gif
InBlock.gif       
InBlock.gif        
//可以先判断 DropDownList.SelectedItem.Value
InBlock.gif        
//第二个
InBlock.gif
        sql = @"select * from webclass where parentid=" + ddl1.SelectedItem.Value;
InBlock.gif        ddl2.DataSource 
= getDs(sql);
InBlock.gif        ddl2.DataTextField 
= "cname";
InBlock.gif        ddl2.DataValueField 
= "id";
InBlock.gif        ddl2.DataBind();
InBlock.gif        
InBlock.gif        
//第三个
InBlock.gif
        if (ddl2.DataSource != null) ddl2.Attributes.Add("onchange""showNext(this.options[selectedIndex].value,'ddl3');");
InBlock.gif        sql 
= @"select * from webclass where parentid=" + ddl2.SelectedItem.Value;
InBlock.gif        ddl3.DataSource 
= getDs(sql);
InBlock.gif        ddl3.DataTextField 
= "cname";
InBlock.gif        ddl3.DataValueField 
= "id";
InBlock.gif        ddl3.DataBind();
InBlock.gif    
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

None.gif
default.aspx内容:
None.gif<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
None.gif
None.gif
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
None.gif
None.gif
<html xmlns="http://www.w3.org/1999/xhtml" >
None.gif
<head runat="server">
None.gif    
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
None.gif    
<title>AjaxPro实现无刷新三级联动</title>
None.gif
</head>
None.gif
<script language="javascript" type="text/javascript">
None.gif      
<!--
None.gif       
// ACLOUD 常用JS函数
ExpandedBlockStart.gifContractedBlock.gif
       function getBid(s)dot.gif{
InBlock.gif          
return document.getElementById(s);
ExpandedBlockEnd.gif        }

ExpandedBlockStart.gifContractedBlock.gif        function getBmc(s)
dot.gif{
InBlock.gif          
return document.getElementByName(s);
ExpandedBlockEnd.gif        }

None.gif        
None.gif       
//显示分类列表
None.gif
       function showNext(sid,obj)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif
InBlock.gif          
if(sid==null || sid=="" || sid.length<1)return;
InBlock.gif          var slt 
=getBid(obj);
InBlock.gif          var v 
= _Default.getNextClass(sid).value; // 类的名称
InBlock.gif          
//alert(v);
InBlock.gif          
//return;
ExpandedSubBlockStart.gifContractedSubBlock.gif
          if (v != null)dot.gif{      
InBlock.gif          
if(v != null && typeof(v) == "object" && v.Tables != null)
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{        
InBlock.gif                        slt.length 
= 0;
InBlock.gif                        slt.options.add(
new Option("请选择",0));
InBlock.gif                        
//加了个“请选择”主要为了触发onchange事件
ExpandedSubBlockStart.gifContractedSubBlock.gif
                        if(obj=="ddl2")dot.gif{
InBlock.gif                        getBid(
"ddl3").options.length=0;
InBlock.gif                        getBid(
"ddl3").options.add(new Option("请选择",0));
ExpandedSubBlockEnd.gif                        }
            
InBlock.gif                        
for(var i=0; i<v.Tables[0].Rows.length; i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        var txt 
= v.Tables[0].Rows[i].txt; //这个地方需要注意区分大小写
InBlock.gif
                      var vol = v.Tables[0].Rows[i].vol; //跟dataset表的列名称要一致
InBlock.gif
                      slt.options.add(new Option(txt,vol));
ExpandedSubBlockEnd.gif                    }

ExpandedSubBlockEnd.gif                    }

ExpandedSubBlockEnd.gif           }
    
InBlock.gif           
return;
ExpandedBlockEnd.gif        }

None.gif        
-->
None.gif
</script>
None.gif
<body>
None.gif    
<form id="form1" runat="server">
None.gif    
<div>
None.gif      
<table width="500" border="0" align="center" cellpadding="0" cellspacing="0">
None.gif        
<tr>
None.gif          
<td width="99">&nbsp;</td>
None.gif          
<td width="401">
None.gif              城市
<asp:DropDownList ID="ddl1" runat="server">
None.gif              
</asp:DropDownList>
None.gif              区域
<asp:DropDownList ID="ddl2" runat="server">
None.gif              
</asp:DropDownList>
None.gif              花园
<asp:DropDownList ID="ddl3" runat="server">
None.gif              
</asp:DropDownList></td>
None.gif        
</tr>
None.gif        
<tr>
None.gif          
<td>&nbsp;</td>
None.gif          
<td>&nbsp;</td>
None.gif        
</tr>
None.gif        
<tr>
None.gif          
<td>&nbsp;</td>
None.gif          
<td>&nbsp;</td>
None.gif        
</tr>
None.gif      
</table>
None.gif    
None.gif    
</div>
None.gif    
</form>
None.gif
</body>
None.gif
</html>
相关文件
http://files.cnblogs.com/asboy/AjaxDropDownlist.rar

转载于:https://www.cnblogs.com/lyfeixue/archive/2007/05/05/736039.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/436496.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】为什么博士叫PhD?

作者&#xff1a;李青影 链接&#xff1a;https://www.zhihu.com/question/20950602/answer/1028008012 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 在填学历的时候遇到过这个问题&#xff0c;明明毕业证书上写…

dnf服务器合并信息,卤蛋带你看韩服!全体服务器合并改版信息互通

‍各位好久不见啊&#xff01;我是卤蛋 本期为各位介绍韩服合区后的全部改动~在韩服合并服务器之前 一共有八个服务器&#xff1a;但是在合区之后大区依然存在&#xff0c;不过服务器是互通的在哪个大区创建角色基本上没什么区别 这样做避免了角色混乱的问题如何切换频道呢&…

java 无法执行export 命令_模块中的export、import以及复合模式的使用方法

export&#xff1a;规定模块对外接口①默认导出&#xff1a;export default Test(导入时可指定模块任意名称&#xff0c;无需知晓内部真实名称)②单独导出&#xff1a;export const name "Bruce"③按需导出&#xff1a;export { age, name, sex }(推荐)④改名导出&a…

【转】在ASP.NET Web API 2中使用Owin基于Token令牌的身份验证

基于令牌的身份验证 基于令牌的身份验证主要区别于以前常用的基于cookie的身份验证&#xff0c;基于cookie的身份验证在B/S架构中使用比较多&#xff0c;但是在Web Api中因其特殊性&#xff0c;基于cookie的身份验证已经不适合了&#xff0c;因为并不是每一个调用api的客户端都…

number 限制最长数字_Java源码阅读-Number

抽象类Number是BigDecimal, BigInteger,Byte,Double,Float,Integer, Long, Short类的父类&#xff0c;实现了java.io.Serializable接口&#xff0c;这个接口以后再说。其中的抽象方法主要是基本数据类型的转换&#xff0c;这些方法都可能涉及到四舍五入和截断Integer类实现了父…

(JavaScript)实现在客户端动态改变Treeview节点的选中状态

Asp.net 2.0 中的 Treeview 非常好用&#xff0c;而且轻便。但在使用过程中&#xff0c;往往会发现一些不够人性化的地方。例如您要设计一棵树&#xff0c;里面放置了一些收藏的网址。在这棵树中&#xff0c;节点的 SelectAction 只有 Expand 和 NavigateUrl 状态&#xff0c;也…

【转】Castle中AdditionalInterfaces用法介绍

首先见下图&#xff08;图一&#xff09;&#xff0c;其中FooController是一个没有实现任何Interface的空类。需要实现的效果是&#xff1a;通过FooController对象调用FooService的Do方法。设置这一不常见的场景主要是为了说明Castle中AdditionalInterfaces的用法。 这个场景诡…

ffmpeg添加到环境变量_Windows + MSVC环境编译ffmpeg

实测成功环境: WIN7 VS2013 FFmpeg4.3 和 WIN10 VS2019 FFmpeg4.3(N-98819-ge2589ac)源码下载FFmpeg源码依赖工具MSYS2​YASM下载安装MSYS2&#xff1b; 下载YASM,将文件名改为yasm.exe,将它所在的目录加入到环境变量中。配置头文件和库搜索路径以下几种方法任选一种1.使用…

【转】阿里技术专家详解 DDD 系列 第一讲- Domain Primitive

导读 对于一个架构师来说&#xff0c;在软件开发中如何降低系统复杂度是一个永恒的挑战&#xff0c;无论是 94 年 GoF 的 Design Patterns &#xff0c; 99 年的 Martin Fowler 的 Refactoring &#xff0c; 02 年的 P of EAA &#xff0c;还是 03 年的 Enterprise Integratio…

wince编译报错

新建了工程&#xff0c;加入之前完整的BSP&#xff0c;怎么也编译不过&#xff0c;提示&#xff1a; [01:0000009403:ERRORE] NMAKE : U1073: dont know how to make C:\WINCE600\OSDesigns\xyjhht30\xyjhht30\Wince600\SMDK6410_ARMV4I\cesysgen\sdk\lib\ARMV4I\retail\ddraw.…

服务器怎么把信息发送给用户,java中怎么用tcp/ip将服务器的消息发送给多个用户...

java中怎么用tcp/ip将服务器的消息发送给多个用户关注:253 答案:2 mip版解决时间 2021-01-31 01:26提问者╬═掵中注定2021-01-30 20:03java中怎么用tcp/ip将服务器的消息发送给多个用户最佳答案二级知识专家往事叫我剪短发2021-01-30 20:09你服务器accept方法后是不是会得到…

VS2005 .vs. Orcas

这两天正在开发自己的一套信息管理系统&#xff0c;开发环境采用 VS2005 C# XP。由于习惯用Dreamweaver 布局&#xff0c;这可好&#xff0c;在DW中布局完成之后&#xff0c;在VS中就完全走形了。郁闷!刚好龙卷风版 Vista 有了&#xff0c;那就装一个试试IIS7和 Orcas。Good&…

解析NK.BIN

最近做NBOOT&#xff0c;EBOOT&#xff0c;对TOC参数不是很明白&#xff0c;老大说得先熟悉一下NK.bin。故找到以下好文&#xff0c;对NK.bin有了一个深入的了解。感谢作者。 study NK.bin format The information from WINCE500\PRIVATE\WINCEOS\COREOS\NK\TOOLS\ROMIMAGE\VI…

查询链接服务器信息,SQL Server链接服务器

SQL Server提供链接到另一个服务器的选项。这通常被用来连接到其他SQL Server数据库&#xff0c;但它也可以被用来连接到一个Microsoft Access数据库。这是通过链接服务器节点成为可能。链接服务器节点可以连接到另一个数据库&#xff0c;通常/通常在不同的机器上运行&#xff…

【转】阿里技术专家详解DDD系列 第二讲 - 应用架构

填坑。谢谢大家对这个系列的期待&#xff0c;持续更新&#xff0c;欢迎关注此账号。 第一篇内容附地址&#xff1a; 阿里巴巴淘系技术&#xff1a;阿里技术专家详解 DDD 系列 第一讲- Domain Primitive​zhuanlan.zhihu.com 架构这个词源于英文里的“Architecture“&#xff…

【转】应用架构之道:分离业务逻辑和技术细节

架构 什么是架构&#xff1f; 关于架构这个概念很难给出一个明确的定义&#xff0c;也没有一个标准的定义。 硬是要给一个概述&#xff0c;我认为架构就是对系统中的实体以及实体之间的关系所进行的抽象描述。 架构始于建筑&#xff0c;是因为人类发展&#xff08;原始人自…

ARM9之NAND FLASH总结

/*author----->Armking*/ /*data----->2008年9月2*/ /*ps:本人总结&#xff0c;备于日后查阅&#xff0c;如若转载&#xff0c;请注明出处*/ /*QQ:382750150*/ 写于篇头&#xff1a; 终于又开始接着学习了&#xff0c;只是不知道为什么JTAG又连不上目标板了&#xff0c;如…

【转】SD-WAN,到底是什么*****

作为一个热门概念&#xff0c;SD-WAN近年以来频繁地出现在我们的视野当中。 很多人说&#xff0c;它是未来最具发展潜力的通信技术之一&#xff0c;极具商业价值。 行业里的老牌通信设备商和运营商对它一致看好&#xff0c;新兴创业企业也把它视为千载难逢的风口机遇&#xff0…

ffmpeg 截图太模糊了_PPT图片模糊?导师说放大!

今日分享图片智能放大●●●●重庆大学PPT图片太模糊了&#xff0c;要用原图&#xff01;放大&#xff0c;放大导师如是说&#xff0c;小硕表示&#xff0c;图片本就这样这咋办&#xff1f;不愁&#xff0c;稳住接着看在做PPT时还是做论文时想用某张图片&#xff0c;但是直接拉…

【转】全了!临港四镇最新对口地段小学,中学都在这里,看看你的孩子能读哪个学校

临港的家长们关于自己的孩子就读哪个学校&#xff0c;家长们一直都很关心和关注&#xff0c;每个家长对孩子的教育很是重视&#xff0c;有部分家长买临港的房子就冲着学区去的&#xff0c;临港的优质教育资源一直是被居民所称赞的&#xff0c;学校也没家长失望&#xff0c;个别…