asp.net實現DropDownList、ListBox無刷新三級聯動(javascript)

 此爲DropDownList無刷新三級聯動的另一種方法,使用javascript操作,因是在客戶端操作,所以切換速度較快,但如果數據量大時,加載時會稍慢點,下一篇文章我會發布針對此方法的改進方案,供大家參考。此爲DropDownList示例,ListBox只需略加修改。

數據庫爲國家統計局最新的行政區劃,自己又加入了香港、臺灣、澳門的行政區劃,需要的朋友可直接下載使用。
數據庫下載
/Files/netshuai/area.rar

aspx頁面代碼
   
<% =strAreaData %>
 
<script language = "JavaScript" type="text/javascript">

    function changearea1()
    {
    document.all(
"<% =Ddl_AreaTwo.ClientID %>").length = 0
    document.all(
"<% =Ddl_AreaTwo.ClientID %>").options[0= new Option('選擇城市','0');
    document.all(
"<% =Ddl_AreaThree.ClientID %>").length = 0
    document.all(
"<% =Ddl_AreaThree.ClientID %>").options[0= new Option('選擇城市','0');
    var oneid
=document.all("<% =Ddl_AreaOne.ClientID %>").value;
    var i;
    
for (i=0;i < onecount; i++)
        {
            
if (subcat[i][1== oneid)
            { 
                document.all(
"<% =Ddl_AreaTwo.ClientID %>").options[document.all("<% =Ddl_AreaTwo.ClientID %>").length] = new Option(subcat[i][0], subcat[i][2]);
            }        
        }
        
    }
    
        function changearea2()
    {
    document.all(
"<% =Ddl_AreaThree.ClientID %>").length = 0
    document.all(
"<% =Ddl_AreaThree.ClientID %>").options[0= new Option('選擇城市','0');
    var twoid
=document.all("<% =Ddl_AreaTwo.ClientID %>").value;
    var oneid
=document.all("<% =Ddl_AreaOne.ClientID %>").value;
    var i;
    
for (i=0;i < onecount1; i++)
        {
            
if (subcat1[i][2== twoid)
            { 
                
if (subcat1[i][1== oneid)
                {
                    document.all(
"<% =Ddl_AreaThree.ClientID %>").options[document.all("<% =Ddl_AreaThree.ClientID %>").length] = new Option(subcat1[i][0], subcat1[i][3]);
                }        
            }
        }
    }      
    
    
</script>                
                    
<asp:DropDownList ID="Ddl_AreaOne" runat="server"  AppendDataBoundItems="True">
                        
<asp:ListItem Value="0">請選擇</asp:ListItem>
                    
</asp:DropDownList>
                    
<asp:DropDownList ID="Ddl_AreaTwo" runat="server" >
                        
<asp:ListItem Value="0">請選擇</asp:ListItem>
                    
</asp:DropDownList>
                    
<asp:DropDownList ID="Ddl_AreaThree" runat="server" >
                        
<asp:ListItem Value="0">請選擇</asp:ListItem>
                    
</asp:DropDownList>

cs頁面代碼
protected string strAreaData;
    
protected void Page_Load(object sender, EventArgs e)
    {
        Ddl_AreaOne.Attributes.Add(
"onchange""changearea1()");
        Ddl_AreaTwo.Attributes.Add(
"onchange""changearea2()");
        
string strSQL;
        strSQL 
= "select * from nts_area where oneid<>0 and twoid=0 and threeid=0 order by sort";
        Ddl_AreaOne.DataSource 
= DataClass.GetDataReader(strSQL);
        Ddl_AreaOne.DataTextField 
= "areaname";
        Ddl_AreaOne.DataValueField 
= "oneid";
        Ddl_AreaOne.DataBind();
        strAreaData 
= "<script language = 'JavaScript' type='text/javascript'>var onecount;onecount=0;subcat = new Array();";
        strSQL 
= "select * from nts_area where oneid<>0 and twoid<>0 and threeid=0 order by sort";
        string ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source='數據庫路徑'";
        OleDbConnection cnn = new OleDbConnection(ConnectionString);
        cnn.Open();
        OleDbCommand cmd=new OleDbCommand(sql, cnn);
        OleDbDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
        int i1 = 0;
        
while (dr.Read())
        {
            strAreaData 
+= "subcat[" + i1.ToString() + "] = new Array('" + dr["areaname"].ToString() + "','" + dr["oneid"].ToString() + "','" + dr["twoid"].ToString() + "');";
            i1
++;

        }
        strAreaData 
+= "onecount=" + i1.ToString() + ";";

        
//添加三級地區
        strAreaData += "var onecount1;onecount1=0;subcat1 = new Array();";

        strSQL 
= "select * from nts_area where oneid<>0 and twoid<>0 and threeid<>0 order by sort";
        cnn.Open();
        cmd.CommandText = strSQL;
        cmd.Connection = cnn;
        dr 
= cmd.ExecuteReader(CommandBehavior.CloseConnection);
        
int n1 = 0;
        
while (dr.Read())
        {
            strAreaData 
+= "subcat1[" + n1.ToString() + "] = new Array('" + dr["areaname"].ToString() + "','" + dr["oneid"].ToString() + "','" + dr["twoid"].ToString() + "','" + dr["threeid"].ToString() + "');"; n1++;

        }
        dr.Close();
        strAreaData 
+= "onecount1=" + n1.ToString() + ";</script>";
    }

 

http://www.cnblogs.com/netshuai/archive/2007/09/13/892272.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章