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:// ...
随机推荐
- Linux中 pid_t 类型的定义.
说明:涉及到的头文件(.h),目录默认都是基于 /usr/include/ 目录. 1.在 "/sys/types.h"中,有下列内容: #include <bits/typ ...
- Jquery插件 easyUI属性汇总
属性分为CSS片段和JS片段. CSS类定义:1.div easyui-window 生成一个window窗口样式. 属性如下: 1)mod ...
- java学习——正则表达式
本文内容来源于 历经5年锤练--史上最适合初学者入门的Java基础视频 例:要求QQ号长度为5~15位,不能以0开头 String qq="123456"; String reg ...
- Spring静态属性注入
今天遇到一个工具类,需要静态注入一个属性,方法如下: 第一步:属性的set和get方法不要加static package cn.com.chinalife.ebusiness.common.util; ...
- smarty 自定义函数
自定义函数:<{方法名称}> 在lib/plugins中新建文件,命名方式是固定的:function.方法名称.php 或者 block.方法名称.php 1.<{literal}& ...
- 深入mysql慢查询设置的详解
set long_query_time=1; #设置慢查询时间为1 秒; set global slow_query_log=on; #开启慢查询日志; show global status like ...
- 在线提取PDF中图片和文字
无需下载软件,你就可以在线提取PDF中图片和文字,http://www.extractpdf.com/不仅可以获取本地PDF文档的图片和文字,还能获取远程PDF文档的图片和文字.如下图所示:结果本人测 ...
- 【创建型】Builder模式
生成器模式的主要思想:将产品对象的创建与表现分离开,并且同样的创建过程可以有不同的产品表现. 直白一点可以理解为:待创建的对象是复杂的,一般情况下是需要经过多个步骤的创建后,最终才能将完整产品创建好, ...
- php批量上传图片并把图片名放入数据库
前几天工作中要做这样一个功能,有八百多个系统 生成的会员:给这八百多个系统会员上传图片:然后把图片名放入数据库. 第一步: 第一步肯定是首先把图片上传到对应的图片目录下,直接用框架中已经有的上传类: ...
- 内联汇编和JMP到内联函数注意事项
对于jmp类型的hook, 如果自己的过程没有使用_declspec(naked),那么系统会自动给添加一些额外的代码,控制堆栈平衡,但是这些额外的代码会破坏被hook函数的堆栈. 对于call类型的 ...