简单的生活,简单的编程(Code Snippet Storage 2 进行中... ...)。
未经许可,请不要转载我的文章。
在前面的讲解中,控件的属性的类型都是基本类型、字符串等简单类型,这些类型我们不用做任何的额外工作,就可以把控件的属性持久化到控件的标签中(保存在aspx[Source]里),但是我们开发的控件的属性不可能全部是这样的简单类型,比如有时也会遇到属性为Size这样的复杂属性,为了使这样的属性持久化,我们还必须做其它的工作,就这是我们这章主要内容。 对复杂属性进行持久化,我们有两种方式(可以单独使用,也可以相互配合): 1、 使用TypeConvert把复杂属性转化为简单类型string,以能持久化到控件的标签中。 2、 串行化复杂属性的元数据。
上述的两种方式,并不是Asp.net控件所特有的,而是Component的特性,而Asp.net的服务器控件又是从Component派生下来的。 如果通过串行化复杂属性元数据的方式来持久化复杂属性,又有两种方式: A、通过“属性名-子属性名”语法来表示,如: Size-Height,Size就是复杂属性名,Height则是Size的属性,也就是Size的属性的元数据。 B、通过内部属性持久化(Inner property persistence),如: <cc1:WebCustomControl1 ID="WebCustomControl1_1" runat="server"> <Size Width="30" Height="20" /> </cc1:WebCustomControl1>
在默认情况下,复杂属性的持久化是通过上述的方式A来实现的,下面就是我通过A方式来持久化复杂属性的一个例子:
posted on 2006-07-06 23:47 mapserver 阅读(2329) 评论(6) 编辑 收藏 网摘 所属分类: Asp.net 服务器端控件
每次看到你的文章,我都一定顶下,支持。 但是写的速度有点慢。 回复 引用
写的不错。谢谢。提个问题 就是关于属性的下拉问题。以前做的时候只要一个属性是枚举类型的,就会自动出下拉列表的。如果改成数据来源是数据库的一列字段。那在设计的时候要怎么写这个属性了。 回复 引用
重写这个属性UITypeEditor, http://mapserver.cnblogs.com/archive/2006/03/08/345244.html">http://mapserver.cnblogs.com/archive/2006/03/08/345244.html public override object EditValue(System.ComponentModel.ITypeDescriptorContext context, System.IServiceProvider provider, object value) { // Uses the IWindowsFormsEditorService to display a // drop-down UI in the Properties window. IWindowsFormsEditorService edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)); IGetValues aItem = (IGetValues)context.Instance; if (edSvc != null) { StringListSelector mySelector = new StringListSelector(edSvc, 字段名称的集合); string strValue = (string)value; if (mySelector.Execute(ref strValue)) value = strValue; } return value; } 回复 引用 查看
谢谢1楼的兄弟。 回复 引用 查看
之前的几篇有没有稿子? 回复 引用 查看
确实牛B了 学着点 回复 引用
昵称: [登录] [注册]
主页:
邮箱:(仅博主可见)
验证码: 看不清,换一个
评论内容:
登录 注册
[使用Ctrl+Enter键快速提交评论]
Powered by: 博客园 Copyright © mapserver