.net3.5 和vs2008中Ajax控件的使用--CascadingDropDown(作级联下拉菜单)控件

一、属性

TargetControlID  指定要扩展的DropDownList的ID

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

PromptText  没有选择时显示的文字

LoadingText  加载数据时显示的文字

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

ServiceMethod  获取数据的Web Method

 ParentControlID  要扩展的DropDownList的父控件ID

SelectedValue  默认的选择项的值

二、使用实例

a、新建Ajax Web 窗体,并命名为CascadingDropDown.aspx

b、在窗体上拖放三个DropDownList控件,然后分别为刚建立的三个控件建立CascadingDropDown扩展程序

添加完扩展程序后,在源代码页面,我们可以看到如下代码:

c、我们这里使用xml文件来作为DropDownList显示的内容,新建一个xml文件取名为DropDownList.xml

 DropDownList.xml文件内容如下:

d、设置好数据源后,我们要新建一个web 服务来提取xml文件中相关内容,新建Web 服务,取名为Carservice.asmx。

e、为CascadingDropDown.asmx添加方法来调用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>

f、为三个CascadingDropDown控件添加相关的属性和方法,代码如下:

 <asp:DropDownList ID="DropDownList1" runat="server">

    </asp:DropDownList>

    <cc1:CascadingDropDown ID="DropDownList1_CascadingDropDown" runat="server" 

        Enabled="True" TargetControlID="DropDownList1" Category="Make"  PromptText="Please select a make"  LoadingText="[Loading makes...]"

            ServicePath="Carservice.asmx" ServiceMethod="GetDropDownContents">

    </cc1:CascadingDropDown>

    <asp:DropDownList ID="DropDownList2" runat="server">

    </asp:DropDownList>

    <cc1:CascadingDropDown ID="DropDownList2_CascadingDropDown" runat="server" 

        Enabled="True" TargetControlID="DropDownList2"

        Category="Model" PromptText="Please select a model" LoadingText="[Loading models...]"

            ServiceMethod="GetDropDownContentsPageMethod" ParentControlID="DropDownList1">

    </cc1:CascadingDropDown>

    <asp:DropDownList ID="DropDownList3" runat="server">

    </asp:DropDownList>

   

    <cc1:CascadingDropDown ID="DropDownList3_CascadingDropDown" runat="server" 

        Enabled="True" TargetControlID="DropDownList3"

        Category="Color" PromptText="Please select a color" LoadingText="[Loading colors...]"

            ServicePath="Carservice.asmx" ServiceMethod="GetDropDownContents"

            ParentControlID="DropDownList2">

    </cc1:CascadingDropDown>

其中大家注意GetDropDownContentsPageMethod是写在CascadingDropDown.aspx的代码页面,而不是写在web 服务里面,代码如下:

Carservice.cs中方法代码如下:

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

    private static XmlDocument _document;

    private static Regex _inputValidationRegex;

    private static object _lock = new object();



    // we make these public statics just so we can call them from externally for the

    // page method call

    public static XmlDocument Document

    {

        get

        {

            lock (_lock)

            {

                if (_document == null)

                {

                    // Read XML data from disk

                    _document = new XmlDocument();

                    _document.Load(HttpContext.Current.Server.MapPath("DropDownList.xml"));

                }

            }

            return _document;

        }

    }



    public static string[] Hierarchy

    {

        get { return new string[] { "make", "model" }; }

    }



    public static Regex InputValidationRegex

    {

        get

        {

            lock (_lock)

            {

                if (null == _inputValidationRegex)

                {

                    _inputValidationRegex = new Regex("^[0-9a-zA-Z //(//)]*___FCKpd___1quot;);

                }

            }

            return _inputValidationRegex;

        }

    }



    public CarService () {



        //如果使用设计的组件,请取消注释以下行 

        //InitializeComponent(); 

    }



    [WebMethod]

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

    {

        // Get a dictionary of known category/value pairs

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



        // Perform a simple query against the data document

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

    }

    

}

写在CascadingDropDown.aspx代码页面的代码如下:

public partial class CascadingDropDown:Page

{

    [WebMethod]

    [System.Web.Script.Services.ScriptMethod]

    public static CascadingDropDownNameValue[] GetDropDownContentsPageMethod(string knownCategoryValues, string category)

    {

        return new CarService().GetDropDownContents(knownCategoryValues, category);

    }

}

g、效果如下:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值