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:// ...
随机推荐
- ASP.NET数据绑定控件简介
•数据绑定分为数据源和数据绑定控件两部分(①数据绑定控件通过数据源获取和修改数据②数据绑定控件通过数据源隔离数据提供者和数据使用者)数据绑定控件→数据源→数据库•数据源:SqlDataSource(连 ...
- ArcMap - 使用python更新列中的值
概述:在外文网上,很多人都问在ArcMap中如何通过SQL修改属性字段的值,我见回答的人都说通过"Field Calculator",貌似不能直接通过SQL语句. 虽然学gis开发 ...
- j2ee开发中的“java容器”和“web容器”有什么区别?
http://blog.csdn.net/zi_jun/article/details/7387259
- php插入转义与查找转义
//转义用于查找 function deepslashes($data) { //判断data表现形式 if(empty($data)) { return $data; } return is_arr ...
- Linux中的搜索命令
find find是最常见和最强大的查找命令,在磁盘中查找文件,用它找到任何你想找的文件,就是速度有点慢. find path -option [ -print ] [ ...
- C/C++安全编码-字符串
1 字符串 1.1 字符串基础 字符串提供命令行参数.环境变量.控制台输入.文本文件及网络连 接,提供外部输入方法来影响程序的行为和输出,这也是程序容易出错的地方.字符串是一个概念,并不是C/ ...
- Spring4.0学习笔记(5) —— 管理bean的生命周期
Spring IOC 容器可以管理Bean的生命周期,Spring允许在Bean生命周期的特定点执行定制的任务 Spring IOC 容器对Bean的生命周期进行管理的过程: 1.通过构造器或工厂方法 ...
- js 音乐
define(function(require,exports,module){ var $music = document.getElementById('music'); var $music_m ...
- C语言杂记 -- 简陋的<深入理解计算机系统>笔记
程序的表示 l 32位64位操作系统是由CPU寄存器的位数决定,即虚拟寻址的范围为2^32.2^64. l 字节的大端小端法是以字节为基本单位的:比如十进制的7在十六位机器上表示 · 地址 100 1 ...
- python: list[-1] 与 list[-1:] 的区别
>>> l '3.542485\t1.977398\t-1\r\n' >>> l.split() ['3.542485', '1.977398', '-1'] &g ...