Go homepage(回首页) Upload pictures (上传图片) Write articles (发文字帖)
The author:(作者)delvpublished in(发表于) 2014/1/23 3:15:27 轻松实现无刷新三级联动菜单[VS2005与AjaxPro]_[Asp.Net教程]
最近做一些网站程序,经常要用到多个下拉菜单选择,看了介绍开始用AjaxPro这个控件,感觉效果不错。以前使用过MagicAjax,很久不用了忘记了,最麻烦的就是在虚拟目录的时候比较麻烦,呵呵,在网上也有很多,不过重要的地方经常没提醒新手,俺也是菜鸟,高手请忽略。看到这个AjaxPro使用比较简单,这次使用的是6.x的,最新的是7.x的,觉得6.0系列的方便,就选它了。在重要的地方都有提示了,相信很容易看懂。 首先在web.config添加这个接点 在与之间,如下: 然后把AjaxPro.2.dll丢到bin文件夹,然后引用它就可以了。 还是发代码吧,麻烦死了下面代码是 Default.aspx.cs的 using System;using System.Data;using System.Configuration;using System.Data.OleDb;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default)); //必要的 if(!IsPostBack)BindDc(); }
/**//// /// 数据库连接 /// /// public OleDbConnection myConn() { string ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["dbpath"]); OleDbConnection conn = new OleDbConnection(ConnStr); try { conn.Open(); return conn; } catch { throw; } } /**//// /// 获取下级分类 /// [AjaxPro.AjaxMethod] public DataSet getNextClass(string cid) { //因为不希望页面可以知道字段名称 所以 as txt,id as vol 如果是sql ser 可以用 = //页面获取的 列名称 必须跟这个一同样 而且区分大小写 一般都是这个地方容易疏忽了 //所以二级分类没变化 string sql = @"select cname as txt,id as vol from webclass where parentid=" + cid; try { return getDs(sql); } catch { //throw; return null; } }
/**//// /// 返回一个DataSet /// /// /// public DataSet getDs(string SQL) { OleDbConnection conn = myConn(); DataSet Ds = new DataSet(); OleDbDataAdapter Da = new OleDbDataAdapter(SQL, conn); try { Da.Fill(Ds); return Ds; } catch { return null; //throw; }
} /**//// /// //数据绑定 /// private void BindDc() { //第一个 string sql = @"select * from webclass where Parentid=0"; ddl1.DataSource = getDs(sql); ddl1.DataTextField = "cname"; ddl1.DataValueField = "id"; ddl1.DataBind(); if (ddl1.DataSource != null) ddl1.Attributes.Add("onchange", "showNext(this.options[selectedIndex].value,'ddl2');");
//可以先判断 DropDownList.SelectedItem.Value //第二个 sql = @"select * from webclass where parentid=" + ddl1.SelectedItem.Value; ddl2.DataSource = getDs(sql); ddl2.DataTextField = "cname"; ddl2.DataValueField = "id"; ddl2.DataBind(); //第三个 if (ddl2.DataSource != null) ddl2.Attributes.Add("onchange", "showNext(this.options[selectedIndex].value,'ddl3');"); sql = @"select * from webclass where parentid=" + ddl2.SelectedItem.Value; ddl3.DataSource = getDs(sql); ddl3.DataTextField = "cname"; ddl3.DataValueField = "id"; ddl3.DataBind(); }}default.aspx内容:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
AjaxPro实现无刷新三级联动 城市 区域 花园
相关文件:http://www.cnblogs.com/Files/asboy/AjaxDropDownlist.rar代码文件于2005-5-13更新过 列出了取值的方法
来源:asboy的cnblogs
赞