JS实现超链删除当前行数据

  • Last update:  2021-08-31
  • 1. 概述

    1.1 应用场景

    填报时常规的删除数据方法是,设置删除行按钮跟在每一行数据后面,详细参见文档:插入和删除行列

    但是数据量大时这个方法有很大弊端,如果每一行后面都有个按钮控件,会导致模板加载时间过长,影响填报效率。

    可以考虑用超链代替按钮控件,通过传参间接实现删除行填报,效果如下图所示:

    1630394116252824.gif

    1.2 实现思路

    每一行后的删除行按钮改用 JavaScript 类型的超链代替,写 JS 代码获取当前行的主键值。

    参数面板添加一个文本框控件和一个按钮控件,将代码获取的主键值传参给参数面板的文本框控件,再调用参数面板的按钮控件点击事件,实现入库。

    2. 示例

    2.1 设计模板

    1)新建普通报表,新建数据集 ds1 ,SQL 语句为:SELECT * FROM Sales

    2)如下图设计表格,其中 G2 单元格写文本:删除改行,这个单元格是加超链用的。

    Snag_5da2373e.png

    3)参数面板添加一个文本框控件和一个按钮控件。

    Snag_5da4c53c.png

    文本框控件名称改为a,按钮控件名称改为b

    并设置这 2 个控件不可见,如下图取消勾选可见即可,这样分页预览时控件隐藏不可见。

    Snag_5da61d79.png

    4)选中右上角组件设置界面的para,也就是参数面板,取消勾选点击查询前不显示报表内容,这样预览时页面不会什么数据都没有。

    Snag_5da7b782.png

    2.2 设置提交事件

    选中按钮控件,添加一个点击事件,事件类型为提交入库,设置删除提交,数据库为FRDemo,表为sales

    点击添加字段,只将 sales 表中的ID字段添加为列,设置其值为公式=$a,也就是文本框控件的值,并勾选主键。

    1630395877820877.png

    2.3 设置回调函数

    在上面提交入库事件设置界面点击设置回调函数,目的是为了执行入库事件时,可以提醒用户提交成功了还是失败了。

    1630396216279681.png

    JavaScript 代码如下:

    if (fr_submitinfo.success) {  
        FR.Msg.toast('提交成功');  
    } else {  
        FR.Msg.toast('提交失败');  
    }  

    2.4 添加超链

    选中 G2 单元格,添加一个 JavaScript 类型的超链,设置参数c,其值为公式=A2,下方输入 JS 代码,如下图所示:

    1630396452758497.png

    JavaScript 代码如下:

    _g().parameterEl.getWidgetByName("a").setValue(c);
    //获取当前行主键值传参给参数面板的文本框控件
    FR.Msg.confirm("警告", "确定要删除吗?", function(value) {
    if (value) {
    _g().parameterEl.getWidgetByName("b").fireEvent("click");
    //触发参数面板按钮控件的点击事件
    }
    })

    2.5 效果预览

    保存报表,分页预览后,删除效果如 1.1应用场景 中所示。

    支持 App 端和 HTML5 端预览。

    3. 模板下载

    已完成模板参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\HyplinkReport\JS实现超链删除当前行数据.cpt

    点击下载模板:JS实现超链删除当前行数据.cpt

    4. 补充说明

    超链代码中实现了删除时二次确认的效果,如果想点击后直接提交,不弹出确认是否删除的对话框,可以修改下代码,如下图所示:

    1630397334359754.png

    JavaScript 代码如下:

    _g().parameterEl.getWidgetByName("a").setValue(c);
    //获取当前行主键值传参给参数面板的文本框控件
    _g().parameterEl.getWidgetByName("b").fireEvent("click");
    //触发参数面板按钮控件的点击事件

    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