本帖最后由 青岛融贯汇众 于 2013-7-10 09:39 编辑
整体的实现方法整理如下:
1.见一个动态表单,其中一个字段为用户ID,表单中使用用户选择控件,用做数据关联,并且用户选择控件设置为只读;其他字段为需要扩展的字段。
2.新建一个视图,随便关联一个数据来源表单,并设置为只读;
视图过滤中sql模式中写脚本,
如下:
var sql="select LOGINNO as ITEM_LOGINNO ,NAME as ITEM_NAME,DOMAINID,ID as ITEM_UID from obpm.dbo.t_user";
sql;
如果需要在列表中显示扩展的信息,则可以用left join联合查询,
查询出需要的列信息,并且新建一个列,列名称叫“操作”,列中写如下脚本:
var uid=getId();//获取字段用户的id
var url="/obpm/portal/dynaform/document/new.action?_formid=11e2-da83-9d3ae6a7-abb1-c5c105089d34&_isJump=1";
url = url + "&UID=" + uid;
var rtn="<input type=\"button\" style=\"width:45px; height:25px \" onclick=\"javacript:OBPM.dialog.show({width:600,height:400,url:'"+url+"', args:OBPM.dialog.getArgs(),title: '详细信息',maximization:false,maximized:true,position:'center'})\" value='详 细 信 息' >"//此处跳转到动态表单。
//var rtn="<input type='button' value='弹出' ";
//rtns+="onclick='OBPM.dialog.show({width: 600,height: 300,url:\""+url+"\",args:{j:1},title : \"信息编辑框\",close: function(rtn) {window.location.reload();}});'/>";
rtn;
在此,是通过页面传值的方式将UID传到打开的动态表单中。
3.在新建的用户信息动态表单上,在每个控件的值脚本中写脚本查询用户的扩展信息并设置在表单上,
用户选择控件的脚本如下:
var rtn="";
var UID=getParameter("UID");
var oldUID=getItemValue("玩家名称");
if(UID!=null && UID!="")
{
rtn=UID;
}
else
{
rtn = oldUID;
}
rtn;
其他扩展字段的控件值脚本如下:
var value=getItemValueAsString("联赛级别");
var rtn="";//返回值
if(value!=null && value!="" )
{
rtn=value;
}
else
{
var pUID=getParameter("UID");
var UID="";
if(pUID!=null && pUID!="")
{
UID=pUID;
}
else
{
UID=getItemValue("玩家名称");
}
var sql="select * from TLK_玩家信息 where ITEM_玩家名称 like '"+UID+"'";
var datas =queryBySQL(sql);
println(datas.size()+"gggggggggg");
if(datas!=null && datas.size()>0)
{
for(var iter = datas.iterator();iter.hasNext();)
{
var doc = iter.next();
if(doc!=null)
{
rtn=doc.getItemValueAsString("联赛级别");
break;
}
}
}
else
{
rtn=""
}
}
rtn;
其他的扩展字段控件的值脚本类似。
4.在动态表单中新建一个按钮,可以是无类型的,也可以是“关闭窗体”类型,看具体需要了;在脚本中写语句判断用户信息扩展信息表中是否存在该用户,存在则修改,不存在则新建,具体的脚本如下:
var thisdoc = getCurrentDocument();
var process = getDocumentProcess();
var formProcess = getFormProcess();
var subform = formProcess.doView("11e2-da83-9d3ae6a7-abb1-c5c105089d34");
var doc = process.doNew(subform,getWebUser(),createParamsTable());
var UID=thisdoc.getItemValueAsString("玩家名称");
var sql="select * from TLK_玩家信息 where convert(nvarchar(255), ITEM_玩家名称) = '"+UID+"'";
//var thisdoc = findBySQL(sql);
var datas= queryBySQL(sql);
println("RolaRola----UID:"+UID);
println("RolaRolaRola数据行数:"+datas.size());
if(datas!=null && datas.size()>0)
{
var iter = datas.iterator();
if(iter.hasNext())
{
var data = iter.next();
var value1 = thisdoc.getItemValueAsString("联赛级别");//联赛级别
data.findItem("联赛级别").setValue(value1);
var value2 = thisdoc.getItemValueAsString("球队名称");//球队名称
data.findItem("球队名称").setValue(value2);
process.doUpdate(data);
}
}
else
{
doc.addStringItem("玩家名称",UID);
var value1 = thisdoc.getItemValueAsString("联赛级别");//联赛级别
doc.addStringItem("联赛级别",value1);
var value2 = thisdoc.getItemValueAsString("球队名称");//球队名称
doc.addStringItem("球队名称",value2);
process.doCreate(doc);
}
至此,基本功能实现。 |