接上篇(javaEYE的图片只能插三个?),继续发截图。
选中一条,查看详细:
在详细中,显示子表数据:
截图完毕。
由于上文中我们已经总结出一个与数据库CRUD相对应的界面范式,那么进一步地,可以通过以下javascript代码,简单地给出必要的信息,
告诉ExtJS我们想获得怎样的界面。
相关代码如下:
BView.viewMap={ "dao.hb.OStation":{ req:{ "pss" : [["id", "name","code","topology","tel", "longitude","latitude","status","tmCreate","tmModify","remark"]], "cns" : ["dao.hb.OStation"], "hql" : "from OStation" }, func_title: function(o){ return o.items.map['name']+'详细信息'; }, cfg_detail:{ btns:["保存"], tabs:[{ title : "基本信息", fset : [{ legend : "", props :["id", "name","code","topology","tel", "longitude","latitude","status"] }] },{ title : "电话", fset : [{ legend : "", props :["tel"] }] },{ title : "备注", fset : [{ legend : "", props :["remark"] }] }]}, cfg_grid:{ btns:['增加','打开','保存','检索','刷新','排序'], hide: ["status","tmCreate","tmModify","remark"] }, cfg_prop:{ "id":{ display:'序号', cfg:{ readOnly:true } }, "name":{ display:"名称" }, "code":{ display:"编号" }, "topology":{ display:"拓扑附件" },"tel":{ display:"电话", editor:"TextArea" }, "longitude":{ display:"X坐标" },"latitude":{ display:"Y坐标" }, "status":BView.cfg_status, "tmModify":{ editor:"DateField", display:'更新时间', dcfg:{ readOnly:true } }, "tmCreate":{ editor:"DateField", display:'建立时间', dcfg:{ readOnly:true } },"remark":{ display:'备注', editor:"TextArea" } },child_views : [{ title:"相关设备", vn:"dao.hb.ODevice", func_filter: function(robj, ui) { var cn = robj.cns[0]; var hql = " from ODevice where sid=" + (robj.items.map['id'] || 0)+" order by id"; ui.setHQL(hql); }, func_setdefault:function(robj,objs){ objs[0].items.map["sid"]=robj.items.map['id']; } },{ title:"相关附件", vn:"dao.hb.OAttachment", func_filter: function(robj, ui) { var cn = robj.cns[0]; var hql = " from OAttachment where entityName='" + robj.cns[0]+"' and entityId=" + (robj.items.map['id'] || 0); ui.setHQL(hql); }, func_setdefault:function(robj,objs){ objs[0].items.map["entityName"]="dao.hb.OStation"; objs[0].items.map["entityId"]=robj.items.map['id']; } }], rel_views:[{ title:"关联附件", vt:{ vn:"dao.hb.ODevice", title:"已关联附件" }, vs:{ vn:"dao.hb.UUser", title:"可选附件" } }] }, "dao.hb.ODevice":{ req:{ "pss" : [["id","mid","sid","sno","name","cabinet","domain","ipaddr","status","iconid","comunityGet","comunitySet","showtip","tmCreate","tmModify","remark"]], "cns" : ["dao.hb.ODevice"], "hql" : "from ODevice order by id" }, cfg_detail:{ btns:["保存"], tabs:[{ title : "基本信息", fset : [{ legend : "", props :["id","mid","sid","sno","name", "cabinet","domain","ipaddr","status","iconid","comunityGet","comunitySet","showtip"] }] },{ title : "备注", fset : [{ legend : "", props :["tmCreate","tmModify","remark"] }] }]}, cfg_grid:{ hide: ["islinked","tmCreate","tmModify","remark"] }, cfg_prop:{ "id":{ display:'序号', cfg:{ readOnly:true } }, "mid":{ display:"设备类型", editor : 'ComboBox', cfg :BView.func_cfg_combo_hql("select id,model from ODeviceType order by id","id") }, "sid":{ display:"位置序号" }, "sno":{ display:"设备编号" }, "name":{ display:"设备名称" }, "cabinet":{ display:"机柜编号" }, "domain":{ display:"所属域/子系统" }, "ipaddr":{ display:"ip地址" }, "adminMode":{ display:"设备管理参数" }, "adminUrl":{ display:"设备管理url" }, "status":{ display:"状态", editor : 'ComboBox', renderer : function(val) { var dtxt = { '0':'禁用', '1':'启用', '2':'备用'}; return dtxt[val]; }, cfg :BView.func_cfg_combo([['启用', 1], ['禁用', 0], ['备用', 2]]) }, "iconid":{ display:"复用拓扑图设备图标ID" }, "comunityGet":{ display:"snmp的Get方法" }, "comunitySet":{ display:"snmp的Set方法" }, "showtip":{ display:"是否显示tip" }, "tmModify":{ editor:"DateField", display:'更新时间', dcfg:{ readOnly:true } }, "tmCreate":{ editor:"DateField", display:'建立时间', dcfg:{ readOnly:true } },"remark":{ display:'备注', editor:"TextArea" } } } };
以上javascript代码遵循一个简单的视图定义规则,对规则简要描述如下:
父类成员 |
子类成员 |
类型 |
说明 |
Req 请求 |
Hql |
String |
列表方式下获得记录的查询语句 |
Rownum |
Int |
分页每页行数 |
|
Cns |
String[] |
多表查询的O/R mapping类名 |
|
Pss |
String[][] |
多表查询的O/R mapping类的属性子集 |
|
Start |
Int |
游标起始位置 |
|
SN |
string |
后台服务实例 |
|
Propdef 属性定义 |
display |
string |
属性的中文名 |
editor |
string |
属性的类型(文本框、组合框、树、附件等) |
|
renderer |
function |
列表方式下对属性数据的显示方法 |
|
cfg |
map |
属性类型的配置参数 |
|
Grid 列表方式 |
Hide |
String[] |
列表方式下隐藏的成员列 |
Page |
Boolean |
是否分页 |
|
Hidebtns_objview |
Int[] |
查看权限下隐藏的按钮 |
|
Hidebtns_objmode |
Int[] |
编辑权限下隐藏的按钮 |
|
btns |
Button[] |
列表方式下的按钮数组 |
|
Edit 详细方式 包含多个标签页,每个标签页包括多个属性集合 |
Legend |
String |
属性集合名称 |
props |
String[] |
属性数组 |
|
Relviews 关联视图 |
titlefunc |
Function |
关联视图标题函数 |
V1 |
String |
选中集合的视图 |
|
V2 |
string |
待选集和的视图 |
|
|
|
|
|