反饋已提交
網絡繁忙
通常情况下,使用 setCellValue("单元格", null, 值)可以给固定单元格置数。若单元格扩展,仅仅使用此公式将达不到效果,如对纵向扩展的 A1 单元格赋值:setCellValue("A1", null, 值),发现只有 A1 位置的单元格能赋到值,而扩展出来的其他单元格没有值,所以扩展的单元格,该如何置数呢?
如下图所示,在每一行的编辑单元格中输入数字,受控单元格根据编辑单元格 的值是否大于 10 来显示 1 或 0。
获取单元格的行号和列号,通过 setCellValue(col,row,value) 给单元格赋值。本文将以示例的形式讲解两种方法。
在控件的编辑结束事件中,动态地将行号与列号作为参数传递给 JS 函数,使用 contentPane.setCellValue(col, row, value);来给单元格赋值。
新建模板,设计报表样式,如下图所示:
A2 单元格输入公式:range(5),并设置单元格纵向扩展,B2、C2 单元格添加「文本控件」。
选中 B2 单元格文本控件,在「控件设置>事件」处,为其添加一个「编辑结束」事件,如下图所示:
添加事件时,需要增加两个参数 col、row ,参数 col 的值为col(),参数 row 的值为row()-1 。
注:setCellValue(col,row,value) 中, row ,col 数值都是从 0 开始,事件中参数col、row 指定 C2 单元格。
JavaScript 代码如下:
if(this.getValue()>10){ contentPane.setCellValue(col,row,1);}else{ contentPane.setCellValue(col,row,0);}
这里当 B2 单元格文本控件值大于 10 时, C2 单元格文本控件置数为 1;反之,置数为 0。
保存模板,点击「填报预览」,效果如下图所示:
移动端及 HTML5 效果如下图所示:
在填报 Web 属性中增加加载结束事件,使用 FineReport 的监听事件获取到当前编辑单元格的行号和列号,保存在全局变量中,然后在单元格的编辑结束事件中获取该行号列号给单元格赋值。FineReport 监听事件获取单元格行号列号可参考:JS获取当前编辑行单元格行号
新建模板,设计报表样式,A1、A2单元格分别添加「文本控件」。如下图所示:
1)点击「模板>模板 Web 属性>填报页面设置」,选择「为该模板单独设置」,新增一个「加载结束」事件,如下图所示:
contentPane.on("cellselect", function(td) { var row =contentPane.curLGP.getTDRow(td); var col =contentPane.curLGP.getTDCol(td); window.row=row; window.col=col;});
2)选中 A2 单元格文本控件,在「控件设置>事件」处添加一个「编辑结束」事件,如下图所示:
var value=this.getValue();contentPane.setCellValue(window.col,window.row-1,value);
注:全局变量必须在前面加一个 Window,监听事件中获取到的行号列号从 1 开始计算,赋值时从 0 开始计算。
注:不支持移动端
已完成的模板,可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\填报预览JS实例\48-JS给扩展单元格置数示例一.cpt
点击下载模板:48-JS给扩展单元格置数示例一.cpt
已完成的模板,可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\填报预览JS实例\48-JS给扩展单元格置数示例二.cpt
点击下载模板:48-JS给扩展单元格置数示例二.cpt
文 檔回 饋
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉