反饋已提交

網絡繁忙

當前為10.0版本文檔,更多實例內容將在最新幫助文檔中展現,點選跳轉至 最新版幫助文檔

填报预览JS实例

1. 概述

对数据进行填报时,会需要使用 JavaScript 对一些功能进行二次开发,比如说设置填报单元格是否可以编辑,给单元格控件进行赋值等。

填报页面下,既有单元格又有控件,通过控件来输入数据、编辑数据,控件编辑结束后,会自动将值传递给控件所在的单元格, 所以 JavaScript 获取的时候即可获取到单元格也可以获取到控件,获取到控件或者单元格后,才能对其进行各种方法操作,从而实现更多功能效果。

填报页面上最后显示填报入库的值都是单元格的值,通过填报控件编辑数据,当编辑结束之后,控件会自动将值传递给当前单元格。如果通过 JavaScript 代码给控件赋值,只有被赋值的控件处于被编辑的状态时,最后才能在单元格中显示出来,如果控件处于非编辑状态,使用控件赋值,是不起作用的。

2. 接口

2.1 获取单元格的值

由于单元格可以设置 形态 来改变其显示值,故 JavaScript 获取单元格有获取实际值和显示值的区分。

2.2.1 实际值

1)获取指定 sheet 中指定行列的值。数为 sheet 序号、单元格列号、行号,参数值从 0 开始。

contentPane.getCellValue(sheet号,列号,行号);  //sheet号行号列号是从0开始 

示例:contentPane.getCellValue(0,1,1) 获取第一个sheet 的第 2 列第 2 行单元格的值。

2)获取当前 sheet 中指定行列的值,参数为单元格列号、行号,参数值从 0 开始。

contentPane.curLGP.getCellValue(列号,行号);  //sheet号行号列号是从0开始

示例:contentPane.getCellValue(1,1) 获取当前 sheet 中 第 2 列第 2 行单元格的值。

3)获取当前 sheet 中指定单元格的值,参数为单元格名称。

contentPane.curLGP.getCellValue("单元格");

示例:contentPane.curLGP.getCellValue("A1") 获取当前  sheet 中 A1单元格的值。

2.2.2 显示值

4)获取当前当前 sheet 中 指定行列的显示值,参数为列号和行号,参数值从 0 开始。

contentPane.curLGP._get$TDCell(col,row).text()//获取单元格显示值 

示例:contentPane.curLGP._get$TDCell(1,1).text() 获取当前 sheet 中 第 2 列第 2 行单元格的显示值。

5)获取当前 sheet 中指定单元格的值,参数为单元格名称。

contentPane.curLGP._get$TDCell("单元格").text()

示例:contentPane.curLGP._get$TDCell("A1").text() 获取当前  sheet 中 A1单元格的显示值。

2.2 给单元格赋值

由于单元格分显示值和实际值,故赋值的方式也分为赋显示值和赋实际值,需要注意的时显示值不能提交入库。

2.2.1 实际值

1)给指定 sheet 中指定行列的单元格赋值,参数为sheet 序号、单元格列号、行号、值,行列序号参数值从 0 开始。

contentPane.setCellValue(sheet号,列号,行号,值); //sheet号行号列号是从0开始 

示例:contentPane.setCellValue(0,1,1,200) 第一个sheet 的第 2 列第 2 行对应的单元格赋值为200。

2)给当前 sheet 指定行列的单元格赋值,参数为列号、行号、值,行列号参数值从 0 开始

contentPane.setCellValue(列号,行号,值);//给单元格赋实际值,可以提交入库  

示例:contentPane.setCellValue(1,1,200) 当前 sheet 的第 2 列第 2 行对应的单元格赋值为200。

3)给当前 sheet 指定的单元格赋值,参数为单元格、值,注意 null 为必要参数,不能取消。

contentPane.setCellValue(单元格,null,值);//给单元格赋实际值,可以提交入库

示例:contentPane.setCellValue("A1",null,200) 当前 sheet  A1单元格赋值为200。

2.2.2 显示值

4)给当前 sheet 指定行列的单元格赋显示值,参数为列号和行号,参数值从 0 开始。

contentPane.curLGP.setCellValue(列号,行号,值);//给单元格赋显示值,非实际值,不能提交入库

示例:contentPane.curLGP.setCellValue(1,1,"200元") 当前 sheet 第 2 列第 2 行单元格赋显示值为 200 元。

5)给当前 sheet 指定的单元格赋显示值,参数为单元格、值,注意 null 为必要参数,不能取消。

contentPane.curLGP.setCellValue(单元格,null,值);//给单元格赋显示值,非实际值,不能提交入库

示例:contentPane.curLGP.setCellValue("A1",null,"200元") 当前 sheet  A1单元格赋值为200元。

2.3 获取当前单元格行列号

获取单元格的值或给单元格赋值都确切的知道单元格行列号,如果单元格行列号是动态的,可通过获取单元格的行列号定位单元格。

1)获取当前单元格行号

contentPane.curLGP.getTDRow(contentPane.curLGP.currentTDCell)//获取行号

2)获取当前单元格列号

contentPane.curLGP.getTDCol(contentPane.curLGP.currentTDCell)//获取列号

2.4 单元格行列号和单元格的转换

1)行列号转换为单元格,能够获取到一个行号 row 和一个列号 col,希望得到该行列号对应的单元格。

FR.columnRow2CellStr({col:列号, row:行号});//行号列号从0开始

示例:FR.columnRow2CellStr({col:1, row:0}) 返回值为 B1

2)单元格转换行列号,知道具体的单元格,希望能定位该单元格的行列号。

FR.cellStr2ColumnRow("单元格")

示例:FR.cellStr2ColumnRow('B1') 返回值为 {"col":1,"row":0}

2.5 获取填报页面控件

2.5.1 在FR模板中获取填报控件

1)根据控件名获取填报控件,参数为指定的控件名。

contentPane.getWidgetByName("widgetname");//根据控件名

2)根据控件所在的单元格的位置获取控件,参数为单元格名称。

contentPane.getWidgetByCell("Cell");//根据控件名所在位置

3)填报控件是与单元格绑定的,如果单元格可扩展,那么控件也可以扩展,故为扩展出多个同名的填报控件,类似这种获取多个同名控件的 JavaScript 方法为,使用 contentPane.getWidgetsByName 的时候,返回的是数组。

contentPane.getWidgetsByName("widgetname")

2.5.2 在 Web 集成页面中获取填报控件

1)在 Web 页面中获取 FineReport 填报报表对象,其中 reportFrame 是 Web 页面中嵌入 FineReport 报表的 iframe。

document.getElementById('reportFrame').contentWindow.contentPane

2)获取到填报报表对象后,可获取其中的控件。

document.getElementById('reportFrame').contentWindow.contentPane.getWidgetByName('widgetname')

3)获取多个同名控件。

document.getElementById('reportFrame').contentWindow.contentPane.getWidgetsByName('widgetname')

2.6 保存控件的值到单元格

FR.setCellWidgetValue(contentPane.curLGP.getTDCell(col,row),value)

示例:FR.setCellWidgetValue(contentPane.curLGP.getTDCell(1,7),a) 将值 a 赋值给 B8 单元格。

2.7 填报控件方法列表

获取到控件之后,需要对该控件进行操作,可以获取其控件值,赋值,设置是否可见等,如下列表方法,其中 Widget 为获取到的控件。

注:获取填报页面的控件,首先要获取到当前的填报页面对象。

方法名方法说明
取实际值Widget.getValue()获取控件实际值
取显示值Widget.getText()获取控件的显示值
赋实际值Widget.setValue()

给参数控件赋值,不建议给填报控件赋实际值

注:使用setValue()给下拉树赋值,需要添加一个 false 参数,即 setValue(value,false)

赋显示值Widget.setText()

给参数控件赋显示值

重置Widget.reset()清空数据
是否可见Widget.isVisible(boolean)返回控件是否可见,返回 true 可见,false 不可见
设置可见Widget.setVisible(boolean)设置控件是否可见,参数为 true 可见,false 不可见
设置可用Widget.setEnable(boolean)设置控件是否可用,参数为 true 可用,false 不可用
是否可用Widget.isEnabled()返回控件是否可用,返回 true 可用,false 不可用
调用控件事件Widget.fireEvent("事件名称")设置控件触发指定名字的事件
是否可以为空Widget.options.allowBlank=false 设置控件是否可为空,true 可为空,false 不可为空

3. 注意事项

3.1 setCellValue给单元格赋值前需先编辑单元格

填报模板中,给控件添加 JS 事件,使用 contentPane.setCellValue() 给其他单元格赋值。报表填报时,需要先编辑被赋值的单元格,否则无法给该单元格赋值。

若未提前编辑被赋值的单元格,为其赋值的控件触发 contentPane.setCellValue() 内容时,会弹出提示:错误代码11201001:无法赋值,模版未编辑单元格 * *。如下图所示:

image.png

4. 示例索引

1)获取单元格的值:JS设置控件焦点   JS限制复选框(填报)选中个数

2)给单元格赋值 :JS给扩展单元格置数  JS给文本框赋多个值    JS实现给填报控件赋值  JS实现一键清除填报内容  

JS实现填报联动自动生成默认值 JS解决控件值刷新不及时的问题  JS实现限制文本框控件文本长度

JS获取填报单元格值或给单元格赋值  JS实现点击单选按钮弹出对话框输入值

3)获取单元格行号列号:JS实现复选按钮控件全选 JS 获取单元格字符串中的数字  JS获取当前编辑行单元格行号

JS批量修改复选框选中行中某列的值

4)获取填报页面控件

JS使用填报页面的控件查询 JS获取扩展控件的所有值 JS实现点击单选按钮组切换sheet

5)填报控件方法使用

JS实现插入自定义行数 JS实现单击控件可直接编辑  JS实现填报控件只能填写一次  


其他索引:

JS隐藏sheet页

JS制作导入进度条

JS实现当前页刷新

JS显示即时或实时时间

控件回调事件的返回值

JS实现删除行前先确认

JS设置报表主体不可用

JS实现自动报警声音

JS自定义插入和删除行按钮

JS实现子窗口填报后刷新父页面

JS实现关闭子窗口时刷新父窗口

JS实现填报长时间未操作关闭窗口

JS实现填报校验后返回错误信息

JS实现页面加载后默认显示指定sheet页

JS实现提交事件填报失败后返回错误信息

JS实现分析/填报报表加载后自动滚动到最下方/最右侧

附件列表


主題: 原简体文档
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤

文 檔回 饋

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

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

不再提示

10s後關閉