AjaxControlToolKit 学习之:CascadingDropDown

1.CascadingDropDownNameValuedropdownList的Text与Value 值对组 类
2.knownCategoryValues:上一级被选dropdownList的category与value 组成的字符串(数据库列名与值)
3.category:数据关联的key值(dropdownList选中项的Value)
4.ParseKnownCategoryValuesString(knownCategoryValues):将knownCategoryValues转换成tringDictionary类型
                           数据源为dataBase
  <实例源码>
  前台:
 所在区:<asp:DropDownList ID="quDrop" runat="server">
    
</asp:DropDownList><br />
    
&nbsp;&nbsp; 街道:<asp:DropDownList ID="streetDrop" runat="server">
    
</asp:DropDownList><br />
    
&nbsp;&nbsp; 大厦:<asp:DropDownList ID="houseDrop" runat="server">
    
</asp:DropDownList><br />
    
<ajaxToolkit:CascadingDropDown ID="CascadingDropDown1" runat="server" TargetControlID="quDrop"
     ServiceMethod
="getQu" ServicePath="GetDataService.asmx" Category ="House_Qu"  LoadingText="loading" PromptText = "选择区">
    
</ajaxToolkit:CascadingDropDown>
  
<ajaxToolkit:CascadingDropDown ID="CascadingDropDown2" runat="server" TargetControlID="streetDrop"
     ServiceMethod
="getStreet" ServicePath="GetDataService.asmx" ParentControlID="quDrop" Category="House_Street" LoadingText="loading" PromptText ="选择街道" >
    
</ajaxToolkit:CascadingDropDown>
    
<ajaxToolkit:CascadingDropDown ID="CascadingDropDown3" runat="server" TargetControlID="houseDrop"
     ServiceMethod
="getHouseNm" ServicePath="GetDataService.asmx" ParentControlID="streetDrop" Category="House_Name" LoadingText="loading" PromptText="选择房子">
    
</ajaxToolkit:CascadingDropDown>

   --------------------------------------------------------------------------------------------
 webService部分 

 

[System.Web.Script.Services.ScriptService]
public class GetDataService :WebService {
    
private static readonly string connStr = ConfigurationManager.AppSettings["sqlConnctionString"].ToString();
    
public GetDataService () {

        
//如果使用设计的组件,请取消注释以下行 
        
//InitializeComponent(); 
    }



    [WebMethod]
    
public CascadingDropDownNameValue[] getQu(string knownCategoryValues, string category)  //取得区
    {
     

        List
<CascadingDropDownNameValue> nameValues = new List<CascadingDropDownNameValue>();
      
        
string sql = "select  distinct(House_Qu) from Houses";
        
using (SqlConnection conn = new SqlConnection(connStr))
        
{
            conn.Open();
            SqlCommand comm 
= new SqlCommand(sql, conn);
            SqlDataReader dr 
= comm.ExecuteReader();
            
while (dr.Read())
            
{
                CascadingDropDownNameValue nameValue 
= new CascadingDropDownNameValue();
                nameValue.name 
= dr.GetSqlString(0).ToString();
                nameValue.value 
= dr.GetSqlString(0).ToString();
                nameValues.Add(nameValue);
            }

            conn.Close();

        }

       
return nameValues.ToArray();
    }

    [WebMethod]
    
public CascadingDropDownNameValue[] getStreet(string knownCategoryValues, string category) //取得街道名称
    {
        System.Collections.Specialized.StringDictionary kv 
= CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues);

        
if (!kv.ContainsKey("House_Qu"|| string.IsNullOrEmpty(kv["House_Qu"]))
        
{
            
return null;
        }

        List
<CascadingDropDownNameValue> nameValues = new List<CascadingDropDownNameValue>();
        
string sql = "select distinct(House_Street) from Houses where House_Qu=@House_Qu";
        
using (SqlConnection conn = new SqlConnection(connStr))
        
{
            conn.Open();
            SqlCommand comm 
= new SqlCommand(sql, conn);
            comm.Parameters.Add(
"@House_Qu", System.Data.SqlDbType.NVarChar).Value = kv["House_Qu"];
            SqlDataReader dr 
= comm.ExecuteReader();
            
while (dr.Read())
            
{
                CascadingDropDownNameValue nameValue 
= new CascadingDropDownNameValue();
                nameValue.name 
= dr.GetSqlString(0).ToString();
                nameValue.value 
= dr.GetSqlString(0).ToString();
                nameValues.Add(nameValue);
            }

            conn.Close();
        }

        
return nameValues.ToArray();
    }

    [WebMethod]
    
public CascadingDropDownNameValue[] getHouseNm(string knownCategoryValues, string category) //取得大厦名称
    {
        System.Collections.Specialized.StringDictionary kv 
= CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues);

        
if (!kv.ContainsKey("House_Street"|| string.IsNullOrEmpty(kv["House_Street"]))
        
{
            
return null;
        }

        List
<CascadingDropDownNameValue> nameValues = new List<CascadingDropDownNameValue>();
        
string sql = "select distinct(House_Name) from Houses where House_Street=@House_Street";
        
using (SqlConnection conn = new SqlConnection(connStr))
        
{
            conn.Open();
            SqlCommand comm 
= new SqlCommand(sql, conn);
            comm.Parameters.Add(
"@House_Street", System.Data.SqlDbType.NVarChar).Value = kv["House_Street"];
            SqlDataReader dr 
= comm.ExecuteReader();
            
while (dr.Read())
            
{
                CascadingDropDownNameValue nameValue 
= new CascadingDropDownNameValue();
                nameValue.name 
= dr.GetSqlString(0).ToString();
                nameValue.value 
= dr.GetSqlString(0).ToString();
                nameValues.Add(nameValue);
            }

            conn.Close();
        }

        
return nameValues.ToArray();
    }


    
}



                              数据源为XML文档
webService 代码
using System;
using System.Collections.Specialized;
using System.Web;
using System.Web.Services;
using System.Xml;

/// <summary>
/// 
/// </summary>

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo 
= WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class CarsService : WebService

    

    private static XmlDocument _document;    
    
private static object _lock = new object();

    
//  XMLDOM 实例
    public static XmlDocument Document
    
{
        
get
        
{
            
lock (_lock)
            
{
                
if (_document == null)
                
{
                    
// 
                    _document = new XmlDocument();
                    _document.Load(HttpContext.Current.Server.MapPath(
"~/App_Data/CarsService.xml"));
                }

            }

            
return _document;
        }

    }


    
public static string[] Hierarchy
    
{
        
get return new string[] "make""model" }; }
    }


    
/// <summary>
    

    
/// </summary>

    public CarsService()
    
{
    }

        
    
/// <summary>
    
/// 
    

    
/// 

    [WebMethod]
    
public AjaxControlToolkit.CascadingDropDownNameValue[] GetDropDownContents(string knownCategoryValues, string category)
    
{
        

        StringDictionary knownCategoryValuesDictionary = AjaxControlToolkit.CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues);

        

        return AjaxControlToolkit.CascadingDropDown.QuerySimpleCascadingDropDownDocument(Document, Hierarchy, knownCategoryValuesDictionary, category);
    }

}
 xml 文件
<?xml version="1.0" encoding="utf-8" ?>
<CarsService>
  
<make name="Acura">
    
<model name="Integra">
      
<color name="Green" />
      
<color name="Sea Green" />
      
<color name="Pale Green" />
    
</model>
    
<model name="RL">
      
<color name="Red" />
      
<color name="Bright Red" />
    
</model>
    
<model name="TL">
      
<color name="Teal" />
      
<color name="Dark Teal" />
    
</model>
  
</make>
  
<make name="Audi" value="Audi (value)">
    
<model name="A4" value="A4 (value)">
      
<color name="Azure" value="Azure (value)" />
      
<color name="Light Azure" value="Light Azure (value)" />
      
<color name="Dark Azure" value="Dark Azure (value)" />
    
</model>
    
<model name="S4" value="S4 (value)">
      
<color name="Silver" value="Silver (value)" />
      
<color name="Metallic" value="Metallic (value)" />
    
</model>
    
<model name="A6" value="A6 (value)">
      
<color name="Cyan" value="Cyan (value)" />
    
</model>
  
</make>
  
<make name="BMW" value="BMW (value)">
    
<model name="3 series" value="3 series (value)">
      
<color name="Blue" value="Blue (value)" />
      
<color name="Sky Blue" value="Sky Blue (value)" />
      
<color name="Racing Blue" value="Racing Blue (value)" />
    
</model>
    
<model name="5 series" value="5 series (value)">
      
<color name="Yellow" value="Yellow (value)" />
      
<color name="Banana" value="Banana (value)" />
    
</model>
    
<model name="7 series" value="7 series (value)">
      
<color name="Brown" value="Brown (value)" />
    
</model>
  
</make>
</CarsService>

posted @ 2007-12-29 16:41  koolay  阅读(842)  评论(1编辑  收藏  举报