接下来该写点啥呢?一脸懵逼,是继续介绍功能呢?还是拉源码出来讲讲思路,看评论那么多人要求上源码,那就还是讲一下设计的思路吧。
先说说基础的东西,
1.框架的数据访问组件是拿之前公司的改良而来的,自己加了一些根据实体自动创建表的功能,所以DAO算不上是原创;
2.日志记录用了Log4net,自己弄了个类封装了一下下。
3.IOC用的是Unity
4.快速反射貌似是老赵的
5.EXCEL导出用NPOI
6.前端JS组件用了,jquery,zTree,validator(改造过),datepicker,hightcharts,layout,uploadify,xheditor...
7.WEB版工作流流程设计器是基于jsPlumb-2.1.0
8.项目基于.NET Framework 4.0
配置的页面呈现时,地址都是/Page开头,所以所有的请求其实是通过PageController呈现的,来看看PageController的代码
就这么一点点,里面最重要的是找到相应的Page或IComponent,然后调用它的Render()方法,从这里也是可以看出,页面的任何一个Ctrl都是可以独立Render的,这样在A页面配置好的控件,是可以直接在B页面引用的。
再来看Page类,它的Render方法就是个赤果果的拼接字符串的过程
默认所有页面都需要common.js和widget.js还有common.css,所以就默认就带进去了,其它的可以在配置中另引,这三个其实都不是真实的文件,
其实最终最重要的逻辑还是在RenderControls里面,
它有个IList<IComponent> 类型的属性Children,页面的所有控件都在里面,Layout就是页面新建时选择的布局了。
layout.Html是什么鬼?如下,就是能让jquery.layout呈现的一串HTML,里面有两个占位符(要多少个自己随便写),然后上面的逻辑无非就是找TargetId指向Left的控件呈现到$Left$的位置上去,TargetId为Right的控件呈现到$Right$位置上去。。。想想这招都觉得有点矬。。。
IComponent的定义如下:
IComponent是为所有能呈现HTML的组件,而IControl为所有控件设计器支持的控件(数据源控件不用呈现,直接继承自这个就行),
一个最最最简单的IComponent长这样:
当然,布局也是可以随便增加的
到这就感觉讲完了。。。。
接下来就是要设计很多很多的控件,增加很多很多的布局,这样理论上来说,什么样的页面都能配置出来了,下面来看看已经配好的页面效果
首页型
列表型
图表型
地图型
图片轮播型
表单型
一堆图表型
列表里有图表型
令人眼花型。。。