JS实现网页框高级过滤筛选

  • Last update:August 30, 2020
  •  1. 概述

    1.1 应用场景

    当报表中参数面板中参数过多或者部分参数不经常作为过滤筛选,可将部分参数放在另一张报表上,用网页框的填写过滤条件,传到主报表。

    高级筛选.gif

    1.2 实现思路

    设计两张模板主模板和子模板,子模板作为主模板预览时的弹窗,点击链接到子模板填写过滤选项,最终将过滤值返回到主模板,主模板点击过滤进行筛选查询。

    2. 示例

    2.1 设计高级筛选_主模板

    2.1.1 数据准备

    新建数据集 ds1,写入数据库查询语句:

    select * from 产品 

    where 1=1

    ${if(len(类别ID) == 0,"","and 类别ID = '" + 类别ID + "'")}

    ${if(len(PRODUCT1) == 0,"","and 产品名称 = '" + PRODUCT1 + "'")}

    ${if(len(gysid) == 0,"","and 供应商ID = '" + gysid + "'")}

    ${if(len(PRODUCT_ID) == 0,"","and 产品ID = '" + PRODUCT_ID + "'")}

    ${if(len(cbj) == 0,"","and 成本价 = '" + cbj + "'")}

    ${if(len(dj) == 0,"","and 单价 = '" + dj + "'")}

    order by 产品ID

    1597297435322220.png

    2.1.2 表格设计

    如下图设计表格样式,B2~D2 单元格拖入对应标题名称的数据列。

    image.png

    2.1.3 参数设置

    将数据集参数类别 ID添加到参数面板,添加产品名称,供应商ID,产品ID,成本价,单价等到参数面板,并设置为不可见,自定义控件选择文本控件类型。并在文本控件右侧拖入一个按钮控件,点击该按钮可以弹出弹窗,控件名称为button0_c,并设置一个控件图标,按钮名字设为:高级筛选。

    1597300850642863.png

    给按钮控件 button0_c 添加一个点击事件,

    注:代码中的弹窗模板路径需要根据实际应用场景调整。

    JavaScript 代码如下:

    window.form = this.options.form; //当前的form赋值给全局变量
    var $iframe = $("<iframe id='inp' name='inp' width='100%' height='100%' scrolling='no' frameborder='0'>"); // iframe参数的命名及宽高等
    $iframe.attr("src", "http://localhost:8075/webroot/decision/view/report?viewlet=高级筛选_子.cpt&ref_t=design&op=view&ref_c=9e2cfd00-e8b1-4f7a-b870-bd0574f39811"); //childtest.cpt为点击查询时,对话框中显示的子报表
    var o = {
    title : "筛选所需数据并返回",
    width : 600,//调整对话框宽度
    height: 300//调整对话框高度
    };
    FR.showDialog(o.title, o.width, o.height, $iframe,o); //弹出对话框

    1597303444587130.png

    2.1.4 保存报表

    保存报表,重命名为高级筛选_主.cpt。

    2.2 设计高级筛选_子模板

    2.2.1 设计弹窗模板

    如下图设计,添加需要添加到弹窗模板的参数过滤控件。

    1597301211505506.png

    2.2.2 给筛选按钮添加事件

    给筛选按钮添加一个点击事件。

    JavaScript 代码如下:

    var form = window.parent.contentPane;

    var cpmc = this.options.form.getWidgetByName("PRODUCT1").getValue();
    var cbj = this.options.form.getWidgetByName("cbj").getValue();
    var gysid = this.options.form.getWidgetByName("gysid").getValue();
    var dj = this.options.form.getWidgetByName("dj").getValue();
    var cpid = this.options.form.getWidgetByName("PRODUCT_ID").getValue();

    //拿取当前页面的父窗口(即获取填报界面)
    var Widget = form.parameterEl.getWidgetByName('PRODUCT1');
    Widget.setValue(cpmc);

    var Widget = form.parameterEl.getWidgetByName('cbj');
    Widget.setValue(cbj);

    var Widget = form.parameterEl.getWidgetByName('gysid');
    Widget.setValue(gysid);

    var Widget = form.parameterEl.getWidgetByName('dj');
    Widget.setValue(dj);

    var Widget = form.parameterEl.getWidgetByName('PRODUCT_ID');
    Widget.setValue(cpid);
    //form.setCellValue($("div.fr-trigger-editor.ui-state-enabled[widgetname='SUPPLIERS_NO']"),val);
    //赋值的索引要做下处理,做对应
    //form.setCellValue(col,row-1,va2); 
    //给文本控件的单元格(A2)赋值val,0代表第一列,1代表第2行
    window.parent.FR.closeDialog(); //确定获取值后,关闭取消父窗口的对话框
    window.parent.FR.destroyDialog();

    1597301354964878.png

    给筛选按钮添加一个初始化事件代码如下:

    1597301453274883.png

    2.2.3 保存报表

    保存报表,重命名为高级筛选_子.cpt。

    2.3 效果预览

    打开模板高级筛选_主.cpt,选择数据分析预览,点击打开弹窗按钮,在产品名称填入“苹果汁”,点击筛选在主页面点击查询,可以查看苹果汁的数据。

    注:分页预览、填报预览、数据分析都可以,但移动端预览是不支持的。

    高级筛选.gif

    3. 模板下载

    已完成的模板可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\参数界面JS实例\高级筛选_主.cpt

    点击下载模板:高级筛选_主.cpt

    已完成的模板可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\参数界面JS实例\高级筛选_子.cpt

    点击下载模板:高级筛选_子.cpt


    Attachment List


    Theme: 下架文档
    Already the First
    • Helpful
    • Not helpful
    • Only read

    滑鼠選中內容,快速回饋問題

    滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

    不再提示

    10s後關閉

    Get
    Help
    Online Support
    Professional technical support is provided to quickly help you solve problems.
    Online support is available from 9:00-12:00 and 13:30-17:30 on weekdays.
    Page Feedback
    You can provide suggestions and feedback for the current web page.
    Pre-Sales Consultation
    Business Consultation
    Business: international@fanruan.com
    Support: support@fanruan.com
    Page Feedback
    *Problem Type
    Cannot be empty
    Problem Description
    0/1000
    Cannot be empty

    Submitted successfully

    Network busy