本帖最后由 青岛融贯汇众 于 2013-7-30 14:58 编辑
问题已经搞定,具体做法如下:
1.构建一个空表单,表单中不需要单行文本框等空间,将需要显示的内容以计算脚本实现,计算脚本的代码示例如下:
var docid=getParameter("_docid");
var rtn="";//返回值
var sql="select name from tb_test where id= '"+docid+"'";
println("Rola--------sql:"+sql);
var datas =queryByDSName("db",sql);
if(datas!=null && datas.size()>0){
for(var iter = datas.iterator();iter.hasNext();)
{
var doc = iter.next();
if(doc!=null)
{
rtn=doc.get("name");
}
break;
}
}
rtn;
2.创建一个视图,其中视图的过滤模式选择“代码(SQL)”,脚本的代码示例如下:
var sql="select id,domainid,formid, code as item_code,name as item_name from tb_test ";
sql;
在此处以一个实体表代替了数据库中的视图,此处可以根据需要编写比较复杂的sql语句或直接引用数据库中的视图
此步骤的关键点在于根据该sql语句查询出的结果结果集中包含id,domainid,formid,三个字段,其中id相当于主键用于数据的唯一索引值,
domainid为当前企业域id,formid对应步骤1中表单的formid,实际使用时可以根据情况将domainid、formid直接在sql语句中构建为常量
3.视图中添加列,视图中添加的列为脚本类型,脚本的代码示例如下:
var aa=getItemValueAsString("name");
aa;
此处的关键点在于,步骤2中的sql语句中相应的字段需要是“item_XXX”的格式
至此,以视图及表单显示数据库中复杂视图的功能完成。
视图的显示效果如下:
点击视图的数据行后,表单的显示效果如下:
表单的具体格式可以根据需要重新排列。
这里有一个问题:由于表单中显示的字段都是用计算脚本实现的,每个计算脚本都需要执行一次sql语句,当表单中显示的字段较多时可能执行效率会比较低 |