相对之前的版本,代码方面进行比较大的修改,主要内容如下:
1.把html与js分离了。
2.字段信息由原来的数组改为对象的方式,如:
FieldList.add(new Field('No', '编号', 'number', '10', ''));
FieldList.add(new Field('Name', '名称', 'varchar', '100', ''));
FieldList.add(new Field('Date_Type', '日期', 'date', '19', ''));
3.抽象了部分生成条件的函数,这样对数据库日后的扩展有利,只要修改highquery.js内的HQConfig的
dialect就可以实现生成不同数据库的sql,如:
// 配置
function HQConfig()
{
this.dialect = "oracle"; // 方言
//this.basePath = ""; // 基础路径
this.version = "0.4"; // 版本
}
这个会自动引入oracle.js,生成的sql就会是oracle数据库能通过的,如下面的日期:
如果想用sqlserver数据库,只要把
dialect改为sqlserver就可以了!现在只支持sqlserver和oracle,呵呵!当然还可以自行扩展!
4.新增了一个实现关联表选择的接口,如下图:
上面的选择框必须独立去实现,然后在新增字段时加入一个方法名,如"choiceCategory":
FieldList.add(new Field('Category', '类别', 'varchar', '1', 'choiceCategory')); // 必须实现choiceCategory这个方法
最后,实现这个方法,如:
// 选择类别
function choiceCategory()
{
var config = "scrollbars=no;status=no;dialogLeft="+300+"px;dialogTop="+200+"px;dialogWidth="+170+"px;dialogHeight="+130+"px";
return window.showModalDialog("choicelist.htm", null, config); // 必须返回值(由编号和描述组成的数组)
}
必须返回两个值组成的数组,可以查看源码中的choicelist.htm。
呵呵!看起来比较烦,但对于一个关联表上是有大量数据时,这种方式比较好的,原因是开发人员可以自行去实现自已的选择框,比如加上查询过滤条件或者是分页之类的,这样用起来就更加灵活了。
当然,对于关联表上是少量数据,又或者那种很少变化的业务字典,如状态(启用,停用);这种类型采用上面的方式就真的实在太麻烦了,由于时间的问题,这个版本还没实现优化这方面,只能留到下一版本了!
源码:
highquery0.4.rar