重写DropDownList控件。

     前一段时间在做项目的遇到一个问题。需要在DropDownList控件里面显示一个树形的下拉列表。效果

http://hi.baidu.com/liuefox/blog/item/f52d5aecc6d1bcd62f2e2105.html可以看到。

     DropDownList的DataTextField属性对字符串进行了处理,使得DropDownList 的Option项不能接受

一些Html标记,他会对Html进行编码即HtmlEncode。这样做的的好处就是比较安全。没有什么特殊字符,但

但是却降低了灵活性。虽然我通过智能ABC输入法输入了特殊字符。也同样解决了这个问题。但是总觉不能从控

控件基础上解决问题,于是就重写了DropDownList,因为DropDowList仅仅是在呈现的时候对它的text属性进

行了编码,所以需要是不要编码就可以了。所以需要做的就是继承DropDownList控件,

并且重写RenderContents方法就可以。

 

Code

说明。这里需要说明的就是RenderContents方法是DropDownList从ListControl继承下来的。在DropDownList源码中ListItem对象的

的HasAttributes属性是internal,也就是你自己写的方法不能用,不过我们可以用Attributes.Count这个属性来代替HasAttributes。

 

posted @ 2009-05-12 13:15  Justin Liu  阅读(1682)  评论(0编辑  收藏  举报