FoxOne---一个快速高效的BS框架--(1)

FoxOne---一个快速高效的BS框架--(2)

FoxOne---一个快速高效的BS框架--(3)

FoxOne---一个快速高效的BS框架--(4)

FoxOne---一个快速高效的BS框架--WEB控件属性编辑器

最近一段时间内,我都在花时间开发一个快速的BS开发框架,我将她命名为FoxOne,她基于ASP.NET MVC,支持SQL SERVER,MY SQL,ORACLE等主流数据库;

具有数据访问,日志记录,环境变量,基于角色的访问控制(页面,控件,数据,支持分级授权),众多的控件(Table,Form,Tree,Tab,Panel,ToolTip.....),等一般的BS开发框架常见的功能,除此之外,我还开发了一套可以在线设计页面的设计器,这是FOXONE最强大的地方,下面我将演示如何在最短时间内快速通过在线设计的方式配置出一个树型列表页面。

首先在页面设计中新建一个页面,其中页面地址是以后将会用于URL访问的地址(如下列的页面将来的地址为/Page/TastPage),标题为页面的title

保存后我们就新建好了一个页面。

接下来我们进入页面的设计界面

进来后,默认已经出现了我们选择的布局类型,其中有”添加组件“的按钮的地方,就是可以在里面添加控件的区域,如下图如示:

我们先要在左边添加一个树型控件,注意在组件列表中,我已经为FOXONE默认添加了十几个我们在做这种企业管理系统常用到的控件,而且支持扩展,只要实现PageControlBase基类,所有扩展的控件也会在这里出现:

保存后,右边的树型控件的属性设置区域,会进一步出现其它复杂属性的设置,例如:数据源。在FOXONE中,所有的数据源都分为三类,一类是可以为树型控件填充数据源的ICascadeDataSource,一类为下拉框,单选框,多选框提供数据源的IKeyValueDataSource,最后一类是为列表提供数据源的IListDataSource,所有实现这三类接口的数据源,在设计器中都会在相应的控件要用到的地方出现以供选择。在下面的示例中我们直接使用数据表数据源。

然后描述一下在对应树型控件的id,name,pId的字段分别是什么。最后保存就行了

这时候我们来看一下页面的效果

其实,对于数据源,我还设计了N个默认的过滤器,对数据源可以进行一些简单的数据过滤,在此先不演示。

继续在右边添加表格控件,如下图,我们先使用”自动生成列“(意思是直接显示数据源返回的所有列,这有点像ASP.NET WEBFORM的GridView的AutoGenerateColumn)

保存后,为表格选择一种数据源,继续用数据表,如下图

选择好后,直接保存,这时候页面的效果就出来了,如下图

上图的效果中,表格还有几个问题:

1.有N多列是不想显示的

2.列头要重命名

3.某些列的值要转换后再显示(如ParentId列,应该显示父级名称,不是父级ID)

4.某些列的显示要格式化

下面我们一一来修改这些问题,首先,我们要把”自动生成列“改为”否“

然后切换到”表格列“选项卡,点”从数据源获取列“, 这时候会自动从指定好的数据源中把每一列取回来,这时候我们可以对这些列进行增删配置,

我们先删掉一列不需要的列,剩下的列如下图:

这时候我们来看看页面的效果:

好,已经显示了指定的列了,现在对列名进行修改:

列名重命名为”组织名称“,然后顺便演示一下输出格式的玩法,这个是参照ASP.NET WEBFORM的GridView的列格式化了

顺便把”最后更新时间“的格式和列名也改一下,

这时候再来看看效果:注意 组织名称 那一列已经都多了个hello world了,最后更新时间也按照指定的格式显示了。

下面来修改下一个问题,我们要对ParentId列进行转换,把父级ID 转为 父级名称,点开列编辑,切换到”列转换器“那一栏,FOXONE默认已经集成了几个常用的列转换,如:用户名称,组织名称,角色名称,数据字典,枚举等等。

设置好转换器后,再来看一下效果,这时候父级列已经是显示名称了。

上面的图中还有Status列是编码,这一列的值来自系统中的枚举,所以进它进行枚举转换,如下图

绑定好转换器后,列值也发生了变化,如下图

最后要让左边的树的点击引起右边表格控件的联动变化,这时候需要出来页面的基础信息里添加一小段JS,指定树型控件的nodeClick事件响应,在里面对table进行条件干涉,然后让table重新刷新(其实就是把参数拼起来,通过POST的方式提交到后台,让TABLE的数据源重新绑定一次),顺便提一句,这里的所有控件都是局部刷新的,但肯定不是像ASP.NET WEBFORM的那种局部刷新实现得这么烂。。。

同时也要给表格控件的数据源添加一个过滤器,这个过滤器是FOXONE默认有的,会自动根据当前FORM和URL参数中的值对数据源的某些列进行字段一一匹配过滤,当前这些过滤器,数据源,转换器等等都是实现某一接口的,可以非常方便进行扩展。

最后看一下点击树控件的效果。。。

这只是FOXONE冰山一角的内容,如果觉得这个框架有存在的意义,就顶起来吧,我会写多点文章,这个框架目前在公司使用8个月,同时也是支持原来的MVC开发的,而且很多配置好的页面和控件都可以局部引用到自己开发的页面中去使用。。

如果有兴趣的可以加入群里来交流一下,群号:581523872

FoxOne---一个快速高效的BS框架的更多相关文章

  1. FoxOne---一个快速高效的BS框架--(2)

    FoxOne---一个快速高效的BS框架--(1) FoxOne---一个快速高效的BS框架--(2) FoxOne---一个快速高效的BS框架--(3) FoxOne---一个快速高效的BS框架-- ...

  2. FoxOne---一个快速高效的BS框架--数据访问(Dao)

    FoxOne---一个快速高效的BS框架--(1) FoxOne---一个快速高效的BS框架--(2) FoxOne---一个快速高效的BS框架--(3) FoxOne---一个快速高效的BS框架-- ...

  3. FoxOne---一个快速高效的BS框架--生成增删改查

    FoxOne---一个快速高效的BS框架--(1) FoxOne---一个快速高效的BS框架--(2) FoxOne---一个快速高效的BS框架--(3) FoxOne---一个快速高效的BS框架-- ...

  4. FoxOne---一个快速高效的BS框架--WEB控件属性编辑器

    FoxOne---一个快速高效的BS框架--(1) FoxOne---一个快速高效的BS框架--(2) FoxOne---一个快速高效的BS框架--(3) FoxOne---一个快速高效的BS框架-- ...

  5. FoxOne---一个快速高效的BS框架--(4)

    FoxOne---一个快速高效的BS框架--(1) FoxOne---一个快速高效的BS框架--(2) FoxOne---一个快速高效的BS框架--(3) FoxOne---一个快速高效的BS框架-- ...

  6. 如何快速高效地完成一个Android项目?

    本文的内容有别于之前文章中纯技术的探讨,会从业务逻辑.技术.团队和方法论的角度探讨如何快速高效地完成一个Android项目.当然,快速高效是有前提的,第一,本文依然是从研发的角度来谈如何把控项目的,而 ...

  7. 一个快速、高效的Levenshtein算法实现——代码实现

    在网上看到一篇博客讲解Levenshtein的计算,大部分内容都挺好的,只是在一些细节上不够好,看了很长时间才明白.我对其中的算法描述做了一个简单的修改.原文的链接是:一个快速.高效的Levensht ...

  8. 快速入门系列--WebAPI--03框架你值得拥有

    接下来进入的是俺在ASP.NET学习中最重要的WebAPI部分,在现在流行的互联网场景下,WebAPI可以和HTML5.单页应用程序SPA等技术和理念很好的结合在一起.所谓ASP.NET WebAPI ...

  9. 基于TILE-GX实现快速数据包处理框架-netlib实现分析【转】

    最近在研究suricata源码,在匹配模式的时候,有tilegx mpipe mode,转载下文,了解一下. 原文地址:http://blog.csdn.net/lhl_blog/article/de ...

随机推荐

  1. 网页上facebook分享功能的具体实现

    1,一个链接: 参数是要分享的页面的链接 代码如下: <a style="width:35px; height:40px; position:relative; top:10px; l ...

  2. 常用shell笔记

    一. vi 编辑文件 1. 删除字符:在只读模式下,X:大字的X,每按一次删除光标所在位置的前面一个字符:x:小写字母x  每按一次删除光标所在位置的后面一个字符 2. 进入编辑模式:i.a.o切换进 ...

  3. 武汉科技大学ACM:1008: 明明的随机数

    Problem Description 明明想在学校中请一些同学一起做一项问卷 调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个, ...

  4. java第一天的疑问

    1字节 的 byte 2字节 的 char 精度 byte<short<char<int<long<float<double 随便打个整数默认为int 随便打个小数 ...

  5. 你好,C++(27)在一个函数内部调用它自己本身 5.1.5 函数的递归调用

    5.1.5 函数的递归调用 在函数调用中,通常我们都是在一个函数中调用另外一个函数,以此来完成其中的某部分功能.例如,我们在main()主函数中调用PowerSum()函数来计算两个数的平方和,而在P ...

  6. QT学习:入门篇(三)

    头文件: #ifndef CChatDisplaySet_h #define CChatDisplaySet_h #include "QtGui/QDialog" #include ...

  7. javascript call()与apply()

    1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call ...

  8. Spring4.0学习笔记(5) —— 管理bean的生命周期

    Spring IOC 容器可以管理Bean的生命周期,Spring允许在Bean生命周期的特定点执行定制的任务 Spring IOC 容器对Bean的生命周期进行管理的过程: 1.通过构造器或工厂方法 ...

  9. jquery中attr、prop、data

    在高版本的jquery中获取标签的属性,可以使用attr().prop().data(),那么这些方法有什么区别呢? 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法. 对于HTML元 ...

  10. SCM管理器

    OpenSCManager 打开SCM管理器 CloseServiceHandle 关闭句柄 CreateService 创建服务 OpenService 打开服务 ControlService 控制 ...