CascadingDropDown控件----级联下拉菜单

功能:
        用来附加到一个ASP.NET DropDownList控件之上,以便自动产生一整组DropDownList控件中的选项,以供用户选择。

属性:        

TargetControlID

指定要扩展的DropDownListID

Category

DropDownList表示的类别名称,在WebMethod中会用到

PromptText

没有选择时显示的文字

LoadingText

加载数据时显示的文字

ServicePath

获取数据的Web Service,为每个DropDownList都要指定

ServiceMethod

获取数据的Web Method

ParentControlID

要扩展的DropDownList的父控件ID

SelectedValue

默认的选择项的值


实例代码:
    aspx页面:
    
< html  xmlns ="http://www.w3.org/1999/xhtml" >
< head  id ="Head1"  runat ="server" >
    
< title > 示范如何使用“级联下拉菜单”(CascadingDropDown) </ title >
    
< link  href ="style.css"  type ="text/css"  rel ="Stylesheet"   />
</ head >
< body  onload ="focus();" >
    
< div  class ="banner" >
        
< href ="http://abcdwxc.cnblogs.com/"  target ="_blank" >
            级联下拉菜单的使用(CascadingDropDown控件)------王晓成博客
        
</ a >
    
</ div >
    
< div  class ="description" >
        
< ul >
            
< li > 从第一个下拉列表框选择某一个 < strong > “县市” </ strong > 之后,用来选择 < strong > “乡镇区市” </ strong > 的下拉列表框就可以进行选取。  </ li >
            
< li > 从第二个下拉列表框选择某一个 < strong > “乡镇区市” </ strong > 之后,便可以查看该乡镇区市的邮政编码。  </ li >
        
</ ul >
    
</ div >
    
< form  id ="form1"  runat ="server" >
        
< asp:ScriptManager  ID ="ScriptManager1"  runat ="server" >
        
</ asp:ScriptManager >
        
< center >
        
< table  border ="1"  width ="480px" >
            
< tr >
                
< td  style ="width: 340px; height: 29px; text-align: right;" >
                    请选择县市:
</ td >
                
< td  style ="width: 140px; height: 29px;" >
                    
< asp:DropDownList  ID ="ddlCityName"  runat ="server" >
                    
</ asp:DropDownList ></ td >
            
</ tr >
            
< tr >
                
< td  style ="width: 340px; text-align: right;" >
                    请选择乡镇区市:
</ td >
                
< td  style ="width: 140px" >
                    
< asp:DropDownList  ID ="ddlSubAreaName"  runat ="server"  AutoPostBack ="True"  
                        onselectedindexchanged
="ddlSubAreaName_SelectedIndexChanged" >
                    
</ asp:DropDownList ></ td >
            
</ tr >
            
< tr >
                
< td  style ="width: 340px; text-align: right;" >
                    邮政编码:
</ td >
                
< td  style ="width: 140px" >
                    
< asp:UpdatePanel  ID ="UpdatePanel1"  runat ="server" >
                        
< ContentTemplate >
                            
< asp:TextBox  ID ="TextBoxZipCode"  runat ="server" ></ asp:TextBox >
                        
</ ContentTemplate >
                        
< Triggers >
                            
< asp:AsyncPostBackTrigger  ControlID ="ddlSubAreaName"  EventName ="SelectedIndexChanged"   />
                        
</ Triggers >
                    
</ asp:UpdatePanel >
                
</ td >
            
</ tr >
        
</ table >
        
</ center >
        
< br  />         
        
< ajaxToolkit:CascadingDropDown  ID ="CascadingDropDown1"  runat ="server"  Category ="City"
            LoadingText
="读取县市数据中"  PromptText ="请选择县市名称"  ServiceMethod ="GetCityNames"  ServicePath ="ZipCodeWebService.asmx"
            TargetControlID
="ddlCityName" >
        
</ ajaxToolkit:CascadingDropDown >
        
< ajaxToolkit:CascadingDropDown  ID ="CascadingDropDown2"  runat ="server"  Category ="SubArea"
            LoadingText
="读取乡镇区市数据中"  ParentControlID ="ddlCityName"  PromptText ="请选择乡镇区市"
            ServiceMethod
="GetSubAreaByCityID"  ServicePath ="ZipCodeWebService.asmx"  TargetControlID ="ddlSubAreaName" >
        
</ ajaxToolkit:CascadingDropDown >
    
</ form >
</ body >
</ html >

CS页面: 
    protected   void  ddlSubAreaName_SelectedIndexChanged( object  sender, EventArgs e)
    
{
        
//将邮政编码显示在文字方块中。
        this.TextBoxZipCode.Text = this.ddlSubAreaName.SelectedItem.Value;
    }

编写相应的WebServices:
using  System;
using  System.Linq;
using  System.Web;
using  System.Collections;
using  System.Collections.Generic;
using  System.Web.Services;
using  System.Web.Services.Protocols;
using  System.Xml.Linq;
using  System.Data.SqlClient;
using  System.Web.Script.Services;
using  AjaxControlToolkit;
using  System.Data;
using  System.Web.Configuration;
using  System.Configuration;
using  System.Collections.Specialized;

/**/ /// <summary>
/// Summary description for ZipCodeWebService
/// </summary>

[WebService(Namespace  =   " http://tempuri.org/ " )]
[WebServiceBinding(ConformsTo 
=  WsiProfiles.BasicProfile1_1)]
//  To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
 [System.Web.Script.Services.ScriptService]

public   class  ZipCodeWebService : System.Web.Services.WebService  {

    
public ZipCodeWebService () {

        
//Uncomment the following line if using designed components 
        
//InitializeComponent(); 
    }


    [WebMethod]
    
public CascadingDropDownNameValue[] GetCityNames(string knownCategoryValues, string category)
    
{
         
//声明 CascadingDropDownNameValue 数组。        
        List<CascadingDropDownNameValue> values =new List<CascadingDropDownNameValue>();
        
//Dim values As New Generic.List(Of CascadingDropDownNameValue)

        
// 取得 web.config 中的数据库联机字符串设定来建立 SQL 联机对象。
        string connectionString = ConfigurationManager.ConnectionStrings["County"].ConnectionString;
        SqlConnection connection 
= new SqlConnection(connectionString);        
        SqlCommand command 
= new SqlCommand("SELECT CName, CID FROM County");
        command.Connection 
= connection;
        
// 开启数据库连接并将数据读入数据读取器中。
        connection.Open();
        SqlDataReader sdr 
= command.ExecuteReader();
        
while (sdr.Read())
        
{
           
// 将「县市名称」与「县市代号」新增到数组中。
            values.Add(new CascadingDropDownNameValue(sdr.GetSqlChars(0).Value.ToString(),sdr.GetInt32(1).ToString()));
        }

        
return values.ToArray();        
    }


    
public CascadingDropDownNameValue[] GetSubAreaByCityID(string knownCategoryValues, string category)
    
{
        StringDictionary kv 
= CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues);
        
int cityID;

        
if (!kv.ContainsKey("cityID"|| !Int32.TryParse(kv["cityID"], out cityID))
        
{
            
return null;
        }

       
// 声明 CascadingDropDownNameValue 数组。
        List<CascadingDropDownNameValue> values = new List<CascadingDropDownNameValue>();
        
// 取得 web.config 中的数据库联机字符串设定来建立 SQL 联机对象。
        string connectionString = ConfigurationManager.ConnectionStrings["County"].ConnectionString;
        SqlConnection connection 
= new SqlConnection(connectionString);
        SqlCommand command 
= new SqlCommand(@"ELECT VName, VCode FROM Village WHERE CountyID =" + cityID);
        
// 开启数据库连接并将数据读入数据读取器中。
        connection.Open();
        SqlDataReader sdr 
= command.ExecuteReader();
        
while (sdr.Read())
        
{
         
// 将「乡镇区市名称」与「邮政编码」新增到数组中。
            values.Add(new CascadingDropDownNameValue(sdr.GetSqlString(0).ToString(), sdr.GetSqlString(1).ToString()));
        }

        
return values.ToArray();        
    }

}



运行结果:
    


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值