就是我们在删除动作执行前, 有一段脚本, 这段脚本首次删除可以执行, 删除后 ,接着选择其他的文档进行删除, 就无法删除了,我们发现是刚才已经删除的文档又被取出来了。所以找不到文档,导致无法继续删除
var params = getParameter("_selects");
var docids = splitText(params,";");
println("zhangnn=params :"+docids.length+"条");
var process = getDocProcess(getApplication());//Document操作类
for(var i=0;i<docids.length;i++){
var doc = process.doView(docids[i]);
println("zhangnn=docids[i]:i"+i+"fdff"+docids[i]);
println("zhangnn=getStateLabel:"+doc.getStateLabel());
if (!doc.getStateLabel().equals("Creator")){
return createAlert("您只能删除Creator状态下的数据!(You can only delete status of Creator!)");
}
就是我们在删除动作执行前, 有一段脚本,限制只有Creator状态的记录可以删除。 这段脚本首次删除可以执行, 删除后 ,接着选择其他的文档进行删除, 就无法删除了,我们发现是刚才已经删除的文档id又被(var params = getParameter("_selects");)取出来了。所以找不到该已经删除的文档,导致无法继续删除。代码如下:
var params = getParameter("_selects");
var docids = splitText(params,";");
println("params :共选择"+docids.length+"条");
var process = getDocProcess(getApplication());
for(var i=0;i<docids.length;i++){
var doc = process.doView(docids[i]);
println("i:"+i+"分隔docids[i]:"+docids[i]);
println("getStateLabel:"+doc.getStateLabel());
if (!doc.getStateLabel().equals("Creator")){
return createAlert("您只能删除Creator状态下的数据!(You can only delete status of Creator!)");
}
}
第一次删除后该条数据不再显示在视图里,但是第二次点击删除按钮时, 用这个 var params = getParameter("_selects"); 依然能取到刚才已经删除的记录的docid。 这个问题最直接的验证方式, 就是在删除动作执行前,执行下列脚本(脚本的作用是只允许删除Creator状态的数据),第一次删除可以成功, 然后第二次再点删除按钮, 就报错, 发现是把刚才已经删除的记录的docid又取到了params结果里面 。
var params = getParameter("_selects");
var docids = splitText(params,";");
println("params :共选择"+docids.length+"条");
var process = getDocProcess(getApplication());
for(var i=0;i<docids.length;i++){
var doc = process.doView(docids[i]);
println("i:"+i+"分隔docids[i]:"+docids[i]);
println("getStateLabel:"+doc.getStateLabel());
if (!doc.getStateLabel().equals("Creator")){
return createAlert("您只能删除Creator状态下的数据!(You can only delete status of Creator!)");
}
}