在自定义WEB控件中,如何添加一个集合属性

junglerover 2004-12-20 06:26:22
本人想直接继承 System.Web.UI.WebControls.WebControl,做一个类似于 System.Web.UI.WebControls.Table 的自定义Web控件,现在遇到一个问题:
如何将集合属性添加到该控件?实现像 Table 控件的Rows集合那样的功能。

我自定义了一个GridRows属性类,但是发现,如果它继承System.Attribute,就无法同时再继承 System.Collections.CollectionBase 。如果只继承System.Attribute,则修改了该属性的内容后,无法加以序列化并保存下来。

本人学习.net时间不长,请各位大虾指教!帮顶有分。
...全文
102 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangxt 2004-12-21
  • 打赏
  • 举报
回复
帮你顶
junglerover 2004-12-21
  • 打赏
  • 举报
回复
的确没有必要继承System.Attribute,昨天我测试过,只继承CollectionBase仍然可以作为自定义控件的属性,并且它自动在属性窗体中显示为(Collection)。

但是该COLLECTION 仍然不能序列化并正常保存。在ASPX页面中,它只能显示为 GridCols=(Collectioon),并未将其展开并序列化。而且,在属性窗口中将该属性修改后,再次读取该ASPX页面会产生错误。

那么如何才能真正实现集合属性的功能?我的需求很简单啊,就是能存能取。

再次多谢各位大虾!
junglerover 2004-12-21
  • 打赏
  • 举报
回复
saucer(思归) 兄提供的链接文章中的确给了我解决问题所需的全部资料,在这里感谢 saucer(思归) 兄!
但是,老兄为什么不直接告诉我,只要在集合属性的定义前面加一句

[PersistenceMode(PersistenceMode.InnerDefaultProperty),
DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]

就可以解决所有问题了呢?

同时多谢帮我顶的诸位,以及catman3000兄!
saucer 2004-12-21
  • 打赏
  • 举报
回复
参考

http://weblogs.asp.net/ngur/articles/144770.aspx
catman3000 2004-12-20
  • 打赏
  • 举报
回复
为何要继承 System.Attribute 呢?如果非要继承,应该在另外一个类中继承,GridRows 只继承 CollectionBase.
robin_xin_xin 2004-12-20
  • 打赏
  • 举报
回复
学习,帮你顶一下
junglerover 2004-12-20
  • 打赏
  • 举报
回复
没人答,顶一下!

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧