全国省,市,区三级联动无刷新下拉菜单(客户端回调法)

来源:互联网 发布:写小说的软件 编辑:程序博客网 时间:2024/04/30 16:08

前台页面:CallbackResult.aspx

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="CallbackResult.aspx.cs" Inherits="CallbackResult" %>

<!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 language="javascript" type="text/javascript">

function callPostBack(input,context)
{
    
var arg=input;
    
if(context=="Select1")
    
{
        
<%=ClientScript.GetCallbackEventReference(this,"arg","province","context")%>;
    }

    
else if(context=="Select2")
    
{
        arg
+="C";
        
<%=ClientScript.GetCallbackEventReference(this,"arg","city","context")%>;
    }

    
else
    
{
        arg
+="A";
        
<%=ClientScript.GetCallbackEventReference(this,"arg","area","context")%>;
    }

}
     

function province(result,context)
{
    
var ItemArr=result.split(',');
    
    
for(var i=0;i<ItemArr.length;i++)
    
{
        
var Item = document.createElement("option");
        Item.text
=ItemArr[i].substring(ItemArr[i].indexOf('-')+1,ItemArr[i].length);
        Item.value
=ItemArr[i].substring(0,ItemArr[i].indexOf('-'));
        document.form1.Select1.options.add(Item);  
    }

}


function city(result,context)
{
    document.form1.Select2.options.length
=0;
    document.form1.Select3.options.length
=0;
    
var Item = document.createElement("option");
    Item.text
="请选择"
    Item.value
="";
    document.form1.Select3.options.add(Item);
    
    
var ItemArr=result.split(',');
    
    
for(var i=0;i<ItemArr.length;i++)
    
{
        Item 
= document.createElement("option");
        Item.text
=ItemArr[i].substring(ItemArr[i].indexOf('-')+1,ItemArr[i].length);
        Item.value
=ItemArr[i].substring(0,ItemArr[i].indexOf('-'));
        document.form1.Select2.options.add(Item);  
    }

}


function area(result,context)
{
    document.form1.Select3.options.length
=0;
    
var ItemArr=result.split(',');
    
    
for(var i=0;i<ItemArr.length;i++)
    
{
        
var Item = document.createElement("option");
        Item.text
=ItemArr[i].substring(ItemArr[i].indexOf('-')+1,ItemArr[i].length);
        Item.value
=ItemArr[i].substring(0,ItemArr[i].indexOf('-'));
        document.form1.Select3.options.add(Item);  
    }

}


function add()
{   
    document.form1.Results.value
="";
    document.form1.Results.value
+=document.form1.Select1.options[document.form1.Select1.options.selectedIndex].text+"->";
    document.form1.Results.value
+=document.form1.Select2.options[document.form1.Select2.options.selectedIndex].text+"->";
    document.form1.Results.value
+=document.form1.Select3.options[document.form1.Select3.options.selectedIndex].text;
}

</script>

</head>
<body onload="callPostBack('province','Select1')">
    
<form id="form1" runat="server">
        省份
<select id="Select1" onchange="callPostBack(this.options[this.options.selectedIndex].value,'Select2')" runat="server">
            
<option selected="selected" value="">请选择</option>
        
</select>&nbsp;
        城市
<select id="Select2" onchange="callPostBack(this.options[this.options.selectedIndex].value,'Select3')" runat="server">
            
<option selected="selected" value="">请选择</option>
        
</select>&nbsp;
        县区
<select id="Select3" runat="server">
            
<option selected="selected" value="">请选择</option>
        
</select>&nbsp;
        
<input id="Button1" type="button" value="确定" onclick="add()" /><br /><p></p>
        
<textarea id="Results" cols="50" rows="10"></textarea>
        
</form>
</body>
</html>

 后台页面:CallbackResult.aspx.cs

 

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;
using System.Data.OleDb;
using System.Data.SqlClient;

public partial class CallbackResult : System.Web.UI.Page,ICallbackEventHandler
{
    
protected string info;
    
public string GetCallbackResult()
    
{
        
return info;
    }


    
public void RaiseCallbackEvent(string eventArgument) 
    
{
        
string strPath = Server.MapPath("App_Data/area.mdb");
        
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strPath;
        OleDbConnection conn 
= new OleDbConnection(strConn);
        conn.Open();
        
if (eventArgument == "province")
        
{
            
string sql = "select * from province order by id Asc";
            OleDbCommand cmd 
= new OleDbCommand(sql, conn);
            OleDbDataReader dr 
= cmd.ExecuteReader();
            
if (dr.Read())
            
{
                info 
= dr[1].ToString() + "-" + dr[2].ToString();

                
while (dr.Read())
                
{
                    info 
= info + "," + dr[1].ToString() + "-" + dr[2].ToString();
                }


            }

            cmd.Dispose();
            dr.Dispose();
        }

        
else if(eventArgument.IndexOf('C')>0)
        
{
            
string sql = "select * from city where father='"+ eventArgument.Substring(0,eventArgument.Length-1+ "' order by id Asc";
            OleDbCommand cmd 
= new OleDbCommand(sql, conn);
            OleDbDataReader dr 
= cmd.ExecuteReader();
            
if (dr.Read())
            
{
                info 
= dr[1].ToString() + "-" + dr[2].ToString();

                
while (dr.Read())
                
{
                    info 
= info + "," + dr[1].ToString() + "-" + dr[2].ToString();
                }


            }

            cmd.Dispose();
            dr.Dispose();
        }

        
else 
        
{
            
string sql = "select * from area where father='" + eventArgument.Substring(0, eventArgument.Length - 1+ "' order by id Asc";
            OleDbCommand cmd 
= new OleDbCommand(sql, conn);
            OleDbDataReader dr 
= cmd.ExecuteReader();
            
if (dr.Read())
            
{
                info 
= dr[1].ToString() + "-" + dr[2].ToString();

                
while (dr.Read())
                
{
                    info 
= info + "," + dr[1].ToString() + "-" + dr[2].ToString();
                }


            }

            cmd.Dispose();
            dr.Dispose();
        }


        conn.Close();
        conn.Dispose();
    }




  
}