摘要:
参考数据新增编程,修改编程也同样的简单,重点仍然是在修改界面的控件排布上新增角色界面的窗口为window_add_role,修改角色界面的窗口命名为window_edit_role和window_add_role不同的是,window_edit_role在显示后需要加载指定ID的角色的数据,所以不能直接调用show方法打开window_edit_role的方法是调用封装的方法,即显示了窗口,又调用了窗口的FormPanel的load方法加载数据,还需要传入角色的ID作为参数编辑按钮的Command封装是这样的 <Command label="编辑" image=&qu 阅读全文
摘要:
本章介绍ExtFrame是如何编写数据的CRUD功能里的新增项的,本章以角色为例首先,新增项一般是个弹出的对话框界面,采用Ext.Window套Ext.FormPanel界面显示出新增的界面的代码一般是在该类数据的查询页面里(按钮条上有新增和查询两个选项)对角色查询里的按钮条一般做如下封装: <CommandList name="rolepanel" moniker="Role" description="角色查询"> <Command label="添加" image="icon-ad 阅读全文
摘要:
ExtJS里的Grid是UI控件的一个亮点,但是用起来比较麻烦,要编写太多的配置项,创建Grid的地方往往代码很长很长在设计框架时,就考虑了以下几点:1、Grid要封装的尽可能的简单,创建Grid代码要简单(最关键的是要降低脚本代码量,提高脚本的可读性与维护性)2、Grid项变更时要尽量简单3、Grid扩展列显示样式时也要尽量简单些4、要能配合Command模式的操作(支持在配置文件里刷新)5、要支持Command列最后就做了这么两个东西出来:QueryGridQueryAllGrid两者的区别是QueryAllGrid不带分页功能后来又在这两个基础上继续继承了其他的Grid,例如带自动连接查 阅读全文
摘要:
被这个问题困扰了相当一段时间系统启动后在IE下基本正常,在FF下多刷新几次,就会出现数据库连接的稀奇古怪的现象先是执行DataAdaper.Fill命令后,出现DataSet.Tables[0]不存在的错误继续执行,出现执行SQL操作报告数据库连接致命错误再继续执行,不报错了,但是每次数据库查询返回的结果都不太怎么正常一直怀疑是使用了系统Cache机制的原因,但想不通为什么IE就没问题出现这个原因,是因为系统的很多逻辑被打散在各个IOC对象之间,如果这些逻辑全部自己创建数据库连接,则第一个会造成数据库连接过多,(例如一颗树的访问,有可能调用一个权限判定逻辑很多次,如果自己创建连接,则每访问一次 阅读全文
摘要:
本章介绍框架里的IOC机制及另一个核心设计模式:TemplateMethodTemplateMethod模式就是所谓的模版了,刚开始跟别人介绍说用这个模式时,很多人说你做的是CMS么,我去看了下CMS的介绍,应该是两回事吧我这里使用这个模式不是提供模版给网站,而是提供处理业务逻辑的模版给开发人员简单的说,就是系统的大多数逻辑,我都做了个模版给你,你能用就用,不能用的话久继承扩展,只修改需要改的地方所谓的TemplateMethod模式,本身就是OOP的继承与重载的一个实现从架构来说,就是有一类功能(例如数据的保存),定义成一个接口,然后为这个接口实现一个通用类,这样,系统的大多数这类的逻辑就可 阅读全文
摘要:
其实这个框架里用到的模式很多,例如持久层创建数据库连接使用的Factory,而我最喜欢用的是Singleton,例如配置文件处理类,逻辑Handler类等大多都采用了延迟加载的Singleton模式,不过这些都不是这个框架设计的核心模式当初设计这个框架时就确定了两大核心模式:Command和TemplateMethod,另有一个配合的是使用IOC机制加载对象处理器,这个应该不算设计模式了本篇就重点介绍框架里是为何以Command为主以及如何应用Command模式设计整个架构的说起来,这个要起源于以前做的一个C/S的项目,那个项目里大量采用了Command模式并且应用到了树上,也就是当用户点.. 阅读全文
摘要:
又是IE......这次紧接前篇,就是布局的BUG勉强算解决了,可是新问题又出现了FormPanel里的字段,要设置成不可改,也就是这样: }, { fieldLabel: '单位地址', name: 'Opportunity.Address', disabled: true, maxLength: 100 }, {要把disabled设置成true然后问题就出现了:诸如下拉框,时间选择什么的,在IE里都不显示,在FF里便是好的,Damn IE......IE里是这样的(有部分显示... 阅读全文
摘要:
这个BUG不知道别人遇到过没,反正写Java的同事总跟我说没有问题,但我这里就是不正确,框架提供给别人也一样不正确其实很简单,就是ViewPort布局后,主区域采用了Card模式(而不是Tab模式),每个Card都是一个Panel而在主区域的Panel里再进行布局使用到了FormPanel时,就遇到了问题:例如:一个查询页面,上面是个FormPanel,用来排放搜索条件控件(这样可以通过form.getValues方法获取参数值,而不需要自己写方法去一个一个控件读了),下方是个放置了Grid的普通Panel或者是一个详细信息页面,上方是一个放置详细信息的FormPanel(这样可以使用封装的代 阅读全文
摘要:
这个架构么,特点还是很突出的,缺点么,这个......首先,这个架构把B/S编程几乎完全变成了界面编程----前台开发人员几乎不需要写特殊的Javascript代码,基本上都是在编写诸如新增、编辑、详细信息之类的界面(全部是ExtJS的Form之类的东西),另外,还要进行一堆配置(这个缺点是比较复杂了些),分层很清晰,不会出现一个逻辑要写一大堆脚本,再写一大堆后台方法这种情况核心脚本的结构异常清晰,不会出现一层一层的套用(可以看看树的代码是怎么写的),我痛恨那种为了实现一个业务逻辑,new 一个button,然后在click事件里来一个new Ajax.Request,然后在success方法 阅读全文
摘要:
这个工作流其实是个比较简化的版本了,因为没人帮我做图示化的设计器:-(在我大致搞出来后意识到,其实如果有图示化设计器,可以很容易的搞定图示版本引擎,只是偶实在是不会做SilverLight,又调不到人手(光杆司令,郁闷)项目又要马上投入使用,只能上比较简单而又比较死的节点定义了,也就是从节点1只能提交到节点2,2只能提交到3这样的流程这个工作流的设计和我过去在另一个比较大的项目(比较早了,还是CS版本的)写的引擎不太一样,设计机制就完全不一样,那个引擎完全是独立运转的,也就是用户拖拖拽拽定义下流程就行了,而这个引擎,是需要实施人员(其实应该是开发人员,实施人员根本搞不定)对每个流程进行配置,虽 阅读全文