实际开发经常要用到级联下拉框,如省份、城市、地区,或三级分类等都要用到。开发起来总是很麻烦,现在有了asp.net ajax tooolkit的CascadingDropDown控件,情况变的好起来了,下面就来看看是怎样实现的。
.aspx页面中的关键代码:
三个DropDownList,形成三级联动。
注意最后一个的设置,自动回传,其中的事件是获取结果并显示在UpdatePanel中的。
三个CascadingDropDown控件,分别关连上面的三个DropDownList
可能是出于演示的目的,第三个dropdownlist使用了页面方法。
数据源使用了sampleWebSite中的xml文件。
Category="Make"中的Make是制造厂商,Model是汽车的类型,Color是汽车的颜色。其它的各个属性的意义:
TargetControlID 不用说了吧;
Category :是各级分类名,如省份,在这里就是制造厂商Make;
PromptText:在初始化时的提示文本;
LoadingText:加载时的提示文本;
ServicePath:web Service文件,全称;
ServiceMethod:web service中的获取数据的方法;
ParentControlID :上一级的dropdownlist的ID。
还有其它的属性,读者自己只好去查toolkit的文档了。
一个UpdatePanel用来显示您选择的结果。
还有一样,千万不要忘了,要不总是出现那个烦人的黄色的页面。
在<%@ Page 中设置EnableEventValidation ="false" 。
aspx.cs后置代码中的代码
很简单,只是用来获取结果并显示在页面上。中间有个页面方法,在第二个ddl上使用了。
下面来看看关键的获取数据的WEB服务
中间已经有了许多注释。下面再来增加点:
QuerySimpleCascadingDropDownDocument(
Document ,Hierarchy ,knownCategoryValuesDictionary ,category ,InputValidationRegex )
* 参数:
* Document:xml文档,数据源。
* Hierarchy:xml文档的层次结构。
* knownCategoryValuesDictionary:就是已经选中项的字符串形式的值。
* category:下一个dropdownlist的分类名。
* InputValidationRegex:是用来验证knownCategoryValuesDictionary ,category两个参数的合法性的。
* 返回值中的CascadingDropDownNameValue 是CascadingDropDown下的一个类
提示:不要忘了在类上方加上这个--[System.Web.Script.Services.ScriptService]
这样,一个使用xml作数据源的级联下拉框就完成了。希望能对你的开发提供一点帮助,本人也正在学习中,如果有什么新的思路,请评论里留言讨论。下一篇将介绍如果使用我们最常用的数据库做数据源来实现级联下拉框。