FineReport——弹出新窗体选值并回掉

主要实现的功能:

在主页面,通过单击按钮,弹出窗体,在窗体中通过下拉框选择值并查询,如果是多值,可以通过复选框选择,点击确定,将选中的行的字段值传递给主页面的下拉复选框,定义其编辑后事件进行查询。将想要的结果显示在表格中。在表格后面添加删除按钮,可以删除对应的列。

该功能主要涉及到几个JS方法,和FR的自动查询(值得注意的是,FR 的自动查询,只能使用在参数面板,在表单中无法使用。)

首先是使用JS弹出一个窗体,而这个窗体的内容就是一个报表模板:

window.form = this.options.form;
var $iframe = $("<iframe id=‘inp‘ name=‘inp‘ width=‘100%‘ height=‘100%‘ scrolling=‘no‘ frameborder=‘0‘>");
$iframe.attr("src", "${servletURL}?reportlet=WorkBook47.cpt&op=write");
var o = {
title : "请选择记录项",
width : 800,
height: 500
};
FR.showDialog(o.title, o.width, o.height, $iframe,o);

然后是,在弹出的这个模板中设计内容,其实也和普通的模板设计一样,只是多了一步就是通过JS获取单元格的值并回传给主页面。

关于回传值(按钮执行JS方法):

var products = [];
var $span = $(‘.fr-checkbox-checkon‘);  //获取选中的复选框
var $tds = $("td").has($span);     //定义选中复选框的单元格
var $trs = $("tr").has($tds);
for(var i=0; i<$trs.length;i++){
var product = $("td:eq(1)",$($trs[i])).html();   //获取选中的C3单元格的值
products.push(product);     //将选中的值放到数组中
}
var form = window.parent.form;
var pva=form.getWidgetByName("p2").getValue();
if(pva==0)
{
     //form.getWidgetByName("p1").setValue(products);
     form.getWidgetByName("p2").setValue(products);
}
else
{
    //form.getWidgetByName("p1").setValue(pva+","+products);
    form.getWidgetByName("p2").setValue(pva+","+products);
}
window.parent.FR.closeDialog();
window.parent.FR.distroyDialog();
 

为了更方便的操作,将值回传给下拉复选框,传值过后通过下拉复选框的编辑结束事件,可以自动查询:

_g().parameterCommit();  

为了更加方便与界面优化,可以将下拉复选框隐藏,定义其初始化事件:

this.invisible();

时间: 2024-10-07 02:57:38

FineReport——弹出新窗体选值并回掉的相关文章

[King.yue]Ext.JS 弹出窗体取值赋值

//从Grid取值var name = Ext.getCmp(gridGridID).getView().getSelectionModel().getSelection()[0].data.Name; var code = Ext.getCmp(gridGridID).getView().getSelectionModel().getSelection()[0].data.Code; //赋值ID Ext.getCmp('@V.ID_TXT_NAME').setValue(name);//不用

js 弹出窗口 选值后提交回父级页(不刷新)的文本框

在父级页 设置两个 文本框 id 和 name和 一个弹出窗口按钮 在弹出窗口中列出若干条记录,现需要将任意一条记录点击提交.将该条记录的 id 和 name 字段 返回到父级对应的文本框中.不刷新父级页面. 父窗口代码:(命名随意)<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&

Jquery 弹出新窗体

开始先用css将这个DIV设好位置,并且隐藏 function winshow() { var winNode = $(".win"); winNode.show("slow"); //将窗体慢慢的弹出来 var add = $("#Button1"); add.hide("slow");//将窗体慢慢的隐藏 } function fanhui() { var winNode = $(".win"); wi

CefSharp禁止弹出新窗体,在同一窗口打开链接,或者在新Tab页打开链接,并且支持带type=&quot;POST&quot; target=&quot;_blank&quot;的链接

说明:在同一窗口打开链接,只要稍加改造就可以实现,这里实现的是在新Tab页打开链接,并且支持带type="POST" target="_blank"的链接 github和bitbucket上相关问题: 1.WPF empty POST data when using custom popup    https://github.com/cefsharp/CefSharp/issues/1267 2.CefLifeSpanHandler, customized OnB

layer插件open方法回掉值问题

最近做项目需用到一个弹出层加载iframe页面的东西,首先想到layer插件,此插件用到过多次,兼容性很好,功能也强大,废话不多说上代码. 其实功能很简单,就是在目标页面选择一个值,回掉回来,说明一下主要的代码. $("#ChoiceBank").click(function () { var width = $("#content").css("Width"); layer.open({ type: 2, title: '开户银行选择', ar

Siebel 找字段、下拉菜单设置值、弹出新页面、弹出选择框、设置默认值 、按钮代码

产品缺陷太多,跟用户交互不人性化.例如搜索新建客户功能,用户输入后会自动保存数据,一旦保存后一. 找字段1.简单 CTRL+Q CTRL+Q 服务请求编号----对应的表.字段.长度: 客户编码-----对应的表.字段.长度(弹出新页面):- 点击上面的pick Applet会弹出“选取客户”对话框 有JOIN就不用TABLE:require代表必填 字段有两个值----项目编号 下图确定只有projectNum有用 3.表单中的字段(不在list column中,而是在control) 二.下

window.open浏览器弹出新窗口被拦截—原因分析和解决方案

最近在做项目的时候碰到了使用window.open被浏览器拦截的情况,在本机实验没问题,到了服务器就被拦截了,火狐有拦截提示,360浏览器拦截提示都没有,虽然在自己的环境可以对页面进行放行,但是对用户来说,不能要求用户都来通过拦截.何况当出现拦截时,很多小白根本不知道发生了啥,不知道在哪里看被拦截的页面,百思不得其解,后来查了一下,各家浏览器支持的不一样. 另外,可以发现,当window.open为用户触发事件内部或者加载时,不会被拦截,一旦将弹出代码移动到ajax或者一段异步代码内部,马上就出

jsp弹出新窗口代码

1.最基本的弹出窗口代码其实代码非常简单: <SCRIPT LANGUAGE="javascript"> <!-- window.open (page.html); --> </SCRIPT> 因为这是一段javascripts代码,所以它们应该放在<SCRIPT LANGUAGE="javascript">标签和</script>之间. <!--  -->是对一些版本低的浏览器起作用,在这些老

多选框向后台传值,多选框的回显,对多选框的各种操作

1.多选框的回显: js:$(     function(){     var checkBoxAll =$("input[name^='checkbox_']");//获取前缀为checkbox_的所有多选框对象     var checkArray=${list};//获取多选框需要回显得对应的值集合     console.info("checkArray=",checkArray);     for(var i=0;i<checkArray.lengt