FoxOne---一个快速高效的BS框架--WEB控件属性编辑器
FoxOne---一个快速高效的BS框架--WEB控件属性编辑器
我们都知道,VS中有个WEBFORM的控件属性编辑器,能够自动反射控件的各个属性,并且根据属性的类型出现相应的编辑控件,例如:
1.布尔类型,对应下拉框,里面的选项出现 是 和 否
2.枚举类型,对应下拉框,里面的选项出现的是枚举的各个值
3.string类型和int类型,出现的都是输入框
对于除String和值类型之外的其它类型的属性,支持得就不太好了,需要手动去实现自己的UITypeEditor,并且用Attribute的方式声明到属性中。
如果不声明自定义复杂类型对应的Editor,那么结果将如下面的User属性:
只是给了一个惨白的输入框,没什么实际意义,只是想告诉你这个属性我识别到了,无能为力。。。
显然我不可能让每个实现了自定义控件的人都去实现一次UITypeEditor,所以我决定基于VS控件属性编辑器的基础之上,增加对其它类型的支持,包括:
1.所有继承自IControl接口的接口类型;
2.所有实现自IControl接口的类型及其子类;
3.泛型列表属性(IList<T>),不过类型T也只能是实现了IControl或其实现类的子类;
效果是这样的:
上面的截图是Table控件的各个属性,其中String和值类型的属性出现在“表格组件”那一栏,其它类型的属性分别出现在各个选项卡中,有接口,有复杂类型,也有泛型列表类型;
其中,对于泛型列表类型,出现的编辑页面如下:
点击这个页面的”新增“时,出现的是对TableColumn类型的编辑;
对于自定义的复杂类型,效果如下:
对于接口类型的属性,出现如下编辑页:
注意上图中出现的五个供选择的数据源是实现了IListDataSource的类型,只要是实现了特定的接口,无需一一注册也会被自动识别到(当然那个扩展是出现在你后来新建的工程的话,那工程的Assembly还是要注册一下的)
当然也可以用特定的Attribute去声明属性需要特定的编辑控件,或者数据源,或者是否出现在编辑器中。
例如:
对于”数据表数据源“,在编辑它的属性时,表名是可以直接选择,而不用手动填写的,但属性类型是String的,这是因为:
在代码中,我用FormFieldAttribute声明了这个属性需要用下拉框,并且用FunctionDataSourceAttribute声明这个下拉框的数据源来自AllTableDataSource。
这样的话,这个控件属性编辑器就很灵活了。。
对于这样的设计,实现中有四点是比较关键的:
1.对于控件属性类型的反射识别,对于不同的类型出现不同的编辑页面;
2.控件的系列化;
3.系列化之后结果的存储,其父子关系的关联;
4.控件的反系列化;
在接下来的文章中,我将继续就这4点展开叙述。。
如果有兴趣的可以加入群里来交流一下,群号:581523872
FoxOne---一个快速高效的BS框架--WEB控件属性编辑器的更多相关文章
- FoxOne---一个快速高效的BS框架--(2)
FoxOne---一个快速高效的BS框架--(1) FoxOne---一个快速高效的BS框架--(2) FoxOne---一个快速高效的BS框架--(3) FoxOne---一个快速高效的BS框架-- ...
- FoxOne---一个快速高效的BS框架
FoxOne---一个快速高效的BS框架--(1) FoxOne---一个快速高效的BS框架--(2) FoxOne---一个快速高效的BS框架--(3) FoxOne---一个快速高效的BS框架-- ...
- FoxOne---一个快速高效的BS框架--数据访问(Dao)
FoxOne---一个快速高效的BS框架--(1) FoxOne---一个快速高效的BS框架--(2) FoxOne---一个快速高效的BS框架--(3) FoxOne---一个快速高效的BS框架-- ...
- FoxOne---一个快速高效的BS框架--生成增删改查
FoxOne---一个快速高效的BS框架--(1) FoxOne---一个快速高效的BS框架--(2) FoxOne---一个快速高效的BS框架--(3) FoxOne---一个快速高效的BS框架-- ...
- FoxOne---一个快速高效的BS框架--(4)
FoxOne---一个快速高效的BS框架--(1) FoxOne---一个快速高效的BS框架--(2) FoxOne---一个快速高效的BS框架--(3) FoxOne---一个快速高效的BS框架-- ...
- 一个完善的ActiveX Web控件教程
免费打工仔:一个完善的ActiveX Web控件教程 出自Ogre3D开放资源地带 跳转到: 导航, 搜索 原作者 David Marcionek. 翻译 免费打工仔 这个教程可以帮助你快速开发一 ...
- 【VS开发】免费打工仔:一个完善的ActiveX Web控件教程
作者 David Marcionek. 翻译 免费打工仔 这个教程可以帮助你快速开发一个ActiveX控件.其中将要讲解关于ActiveX开发的一些基础概念,诸如方法(method).属性(prope ...
- 基于jQuery 常用WEB控件收集
Horizontal accordion: jQuery 基于jQuery开发,非常简单的水平方向折叠控件. Horizontal accordion: jQuery jQuery-Horizonta ...
- 【WEB自动化测试之控件定位】基于HTML5控件的唯一控件属性定位
一.WEB控件定位是什么 要想弄懂这个问题,我们还是基于实践来学习.我们先来看一条入门级别自动化测试用例的构成. DemoCase:正确用户名和密码登录博客园,登录成功 URL: https:// ...
随机推荐
- Android开发手记(7) 按钮类控件的使用
1.点击Button改变页面背景色 通过Button改变页面背景色,首先新建相应的对象,让后绑定到Layout上的元素. final RelativeLayout layout = (Relative ...
- Shell中逻辑判断
[ 条件1 -a 条件2 ] 当1和2都真时才为真 [ 条件1 -o 条件2 ] 当1和2其中一个为真即为真 [ ! 条件 ] 取反 && 与 ...
- Centos 5.2安装配置DNS服务器
BIND安装配置(主从)我的系统环境:centos 5.2 作者:哈密瓜 主:我采用的是yum安装[root@linux src]#yum -y install bind* 生成rndc控制命令的ke ...
- java 自定义注解以及获得注解的值
1.自定义注解 import java.lang.annotation.*; @Documented @Target(ElementType.FIELD) @Inherited @Retention( ...
- JQuery 解析xml
JQuery 可以通过 $.get() 或 $.post() 方法来加载 xml. JQuery 解析 XML 与解析 DOM 一样, 可以使用 find(), children() 等函数来 ...
- 武汉科技大学ACM:1007: 陶陶摘苹果
Problem Description 厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试. 个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹 ...
- C#中的委托(Delegate)和事件(Event)
原文地址:C#中的委托(Delegate)和事件(Event) 作者:jiyuan51 把C#中的委托(Delegate)和事件(Event)放到现在讲是有目的的:给下次写的设计模式--观察者(Obs ...
- jS放大镜效果
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="demo4.aspx.cs& ...
- cmd命名设置成全局
如在jsdoc里.想要把jsdoc命名设置成全局.只要把环境变量里面的用户变量里面的path变量值增加 C:\Program Files\nodejs;E:\Program Files (x86)\j ...
- mysql innerjoin left join right join 解析
毕业半年多时间,一直都没有学习好join 之前一直是先从一个表里面取出数据然后,然后再从另外一个表里面取出数据,然后再写一个函数循环格式化数据. 还是先写一下学到的东西吧! 转载自w3school ...