< asp : DropDownList ID ="ddl1" runat ="server" Width ="100px" ></ asp : DropDownList > < asp : DropDownList ID ="ddl2" runat ="server" Width ="100px" ></ asp : DropDownList >
< asp : DropDownList ID ="ddl3" runat ="server" Width ="100px" ></ asp : DropDownList >
js:
< script src ="js/jquery-1.4.2.min.js" type ="text/javascript" ></ script > < script type ="text/javascript"> $(document).ready(function () { GetA(); $("#ddl1" ).change(function () { GetB(); }); $("#ddl2" ).change(function () { GetC(); }); }); function GetA() { $("#ddl1" ).html("" ); $("#ddl1" ).append("<option value='-1' selected='selected'>请选择...</option>" ); //$("select[name$=ddl1] > option:selected").remove(); var strId = 0; $.getJSON("LoadClass.ashx?ddlId=" + strId, function (data) { for (var i = 0; i < data.length; i++) { $("select[name$=ddl1]" ).append($("<option></option>" ).val(data[i].ID).html(data[i].Cname)); }; GetB(); }); } function GetB() { $("#ddl2" ).html("" ); $("#ddl3" ).html("" ); var strId = $("#ddl1" ).attr("value" ); if (strId != 0) { $.getJSON("LoadClass.ashx?ddlId=" + strId, function (data) { for (var i = 0; i < data.length; i++) { $("select[name$=ddl2]" ).append($("<option></option>" ).val(data[i].ID).html(data[i].Cname)); }; GetC(); }); } } function GetC() { $("#ddl3" ).html("" ); var strId = $("#ddl2" ).attr("value" ); if (strId != 0) { $.getJSON("LoadClass.ashx?ddlId=" + strId, function (data) { for (var i = 0; i < data.length; i++) { $("select[name$=ddl3]" ).append($("<option></option>" ).val(data[i].ID).html(data[i].Cname)); }; }); } } </ script >
LoadClass.ashx:
<% @ WebHandler Language ="C#" Class ="LoadClass" %> using System; using System.Web; using System.Text; using System.Data; public class LoadClass : IHttpHandler { public void ProcessRequest (HttpContext context) { // 数组 [{"ID":"275","Cname":"A1"},{"ID":"319","Cname":"A2"},{"ID":"322","Cname":"A3"}] int strId = Convert .ToInt32(context.Request["ddlId" ]); string strSQL = "select * from Class where parent_Ptr=" + strId + " order by classOrder asc " ; db d = new db (); DataTable dt = d.getDT(strSQL); StringBuilder strClass = new StringBuilder (); if (dt != null ) { strClass.Append("[" ); for (int i = 0 ; i < dt.Rows.Count; i++) { strClass.Append("{" ); strClass.Append("\"ID\":\"" + dt.Rows[i]["id" ].ToString() + "\"," ); strClass.Append("\"Cname\":\"" + dt.Rows[i]["classCname" ].ToString() + "\"" ); if (i != dt.Rows.Count - 1 ) { strClass.Append("}," ); } } } strClass.Append("}" ); strClass.Append("]" ); context.Response.ContentType = "application/json" ; context.Response.ContentEncoding = Encoding .UTF8; context.Response.Write(strClass.ToString()); context.Response.End(); } public bool IsReusable { get { return false ; } } }
注意:
//后台只能获取value值,不能直接获取text,需要通过js、控件中转 //结果:275 276 277 Label1.Text = Request.Form[ddl1.UniqueID] + " "
+ Request.Form["ddl2" ] + " "
+ Request.Form[ddl3.ClientID.Replace("_" , "$" )] ;
遇到的问题:
下拉框text的值通过HiddenField
控件中转
< asp : HiddenField ID ="HiddenField1" runat ="server" /> < asp : HiddenField ID ="HiddenField2" runat ="server" /> < asp : HiddenField ID ="HiddenField3" runat ="server" />
把选中下拉框的值赋予隐藏控件中:
< script type ="text/javascript"> var Key1 = $("#ddl1>option:selected" ).val(); $('#HiddenField1' ).val(Key1); var Key2 = $("#ddl2>option:selected" ).val(); $('#HiddenField2' ).val(Key2); var Key3 = $("#ddl3>option:selected" ).val(); $('#HiddenField3' ).val(Key3); </ script >
选择下拉框后 动态赋值到HiddenField 控件中的值 无法与下拉框选中的值相对应!
可能与初始化有关,赋值这段代码应该放到什么地方呢?或者有什么好的方法,欢迎讨论?
http://www.cnblogs.com/zengxiangzhan/archive/2010/02/21/1670646.html