DropdownList 调用AJax 级联显示

本文介绍了一个使用ASP.NET AJAX实现的下拉框级联选择器的示例,通过AJAX请求更新子级下拉框的内容,展示了如何在网页中实现动态加载数据并更新DOM的方法。

<script type="text/javascript">
var xmlHttp;
var objSele;
//AJax
function AjaxMehtod(Surl)
{
    var url = Surl+"&time="+new Date();
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    xmlHttp.onreadystatechange = CallBackMethod;
    xmlHttp.open("post", Surl, true);
    xmlHttp.send(null);
}
//回调函数
function CallBackMethod()
{
    if (4 == xmlHttp.readyState && 200 == xmlHttp.status)
    {
        var val = xmlHttp.responseText;
        var selMain = document.getElementById('<%=dropCategory.ClientID %>');
        if(val != "")
        {
            while(true)
            {
                var o=objSele.nextSibling;
                if(!!o)
                    o.removeNode();
                else
                    break;
            }
            createSelect(val);
        }
        else
        {
            while(true)
            {
                var o=objSele.nextSibling;
                if(!!o)
                    o.removeNode();
                else
                    break;
            }
        }
    }
}
//Change事件
function Change(obj)
{
    objSele = obj;
    var id = objSele.value;
    var url = "AjaxCateMethod.aspx?id="+id;
    AjaxMehtod(url);
   
   
    //绑定当前所选的分类的值
    var index = objSele.selectedIndex;
    var text1 = objSele.options[index].text;
    if(text1 != "--请选择--")
    {
        document.getElementById("div1").innerText = "所选分类:"+text1;
        document.getElementById("<%=hidCateID.ClientID %>").value = id;
    }
   
}

function  createSelect(str)  
{  
    var items = str.split(',');
    var oSel = document.createElement("select"); 
   
    var oo =  document.createElement("option");
    oo.innerText = "--请选择--";  
    oo.value = "-1";  
    oSel.appendChild(oo);
    for(var i=0;i<items.length;i++)  
    {  
        var arrs = items[i].split('-');
        var oOption = document.createElement("option");  
        oOption.innerText = arrs[1];  
        oOption.value = arrs[0];  
        oSel.appendChild(oOption);  
    }  
    var obj = document.getElementById("fen");
    obj.appendChild(oSel);  
    obj.onchange = null;  
    oSel.onchange = function(){ Change(this);}
}

</script>

 

后台使用方法

this.dropCategory.Attributes.Add("onchange", "Change(this);");

 

AJAX调用的页面后台代码如下

主要功能是 返回字符串,

例如: "0-重庆,1-上海,2-北京"

 

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using System.Text;public partial class WebForm_AjaxCateMethod : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
       
    }
    protected override void Render(HtmlTextWriter writer)
    {
        string id = Request.QueryString["id"].ToString();
        Madeinchina.BLL.SUPT.Category bll = new Madeinchina.BLL.SUPT.Category();
        DataTable dt =  bll.GetList("PARENT_ID="+id);
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            sb.AppendFormat("{0}-{1},", dt.Rows[i]["CATEGORY_ID"].ToString(), dt.Rows[i]["CATEGORY_NAME"].ToString());
        }
        string val = "";
        if (sb.ToString().Length > 0)
        {
            val = sb.ToString().Substring(0, sb.ToString().Length - 1);
        }
        Response.Write(val);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值