为了更好的让大家对我前面编写的两个控件有所理解,我特意架设了一个临时站点供大家测试http://www.keyss.cn:8888,由于这台主机只是我家的一台电脑所以并不保证一直开放:)

下面我对DropDownTree的几个主要知识点作一个介绍:

一、关于选择叶子节点及支持验证控件:

在DropDownTree前面声明的 ValidationPropertyAttribute("SelectedValue")属性保证了验证器控件在服务器端对所选的值进行验证,但为了同时支持在客户端的验证则控件必需在客户端提供一个基于inputHTML元素的form元素,由于DropDownTree在客户端就是dropdownlist控件,所以这里我只要保证在绘制dropdownlist时同时绘制他的ID属性和服务器端的一样即可支持客户端验证。而这一点在WebControl控件的addattributestorender中已经实现。 而为了支持是否选择叶子节点验证,我在控件render过程中会作一个判断,如果起用了仅可选择叶子节点属性,并且不是叶子节点则不输出item的value属性这样我们只要我们在页面上加一个Requirefieldvalidatior不充许dropdowntree值为空即可达到强制用户选择叶子节点的功能。

二、IPostBackDataHandler接口 
 为了支持当选择条目变化时触发后台事件实现此接口,当回送时比较现值和原值,如果不一样则触发事件。