【填报】单元格公式实时计算

就是填报单元格A1后,单元格B1、C1都实时得出公式计算结果。

目前在A1加了一个‘编辑后’事件,让B1实时计算了,但C1还是要单击一下C1单元格才出结果。求解决让C1也能立马显示的办法。当前脚本如下:

var cell = contentPane.curLGP.getTDCell(1,1);contentPane.curLGP.selectTDCell(cell);

A1,B1,C1都使用了select公式,A1是下拉框带默认值格式的,B1是不填报,C1也是下拉框带默认值。B1和C1不关联。初始默认值显示都是没问题的,问题是下拉选择A1时,C1不能立马改变,要单击一下C1单元格才可以。

这个主要是要解决一个单元格数值联动两个单元格公式的显示问题,因为另一个一样写法,但只联动一个单元格的公式,虽然没有写事件,但是点击任意单元格之后都会实现单元格联动的值改变

FineReport 程琼 发布于 2021-3-31 09:05 (编辑于 2021-3-31 09:45)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
snrtuemcLv8专家互助
发布于2021-3-31 09:37

var cell = contentPane.curLGP.getTDCell(1,1);//取得A1单元格

contentPane.curLGP.selectTDCell(cell);//选中A1单元格

这个语句,就是聚焦在A1单元格,你这个写和没有一样

你把控件都放到下一行,再看下效果,C2会不会改变值,正常是可以

  • 程琼 程琼(提问者) 谢谢!我这个是为了方便举例,所以用了A1\\B1\\C1的说法,实际是F6,D8,C24这样的错位
    2021-03-31 09:39 
  • snrtuemc snrtuemc 回复 程琼(提问者) 那你的C24是不是扩展出来的,最好上个模板看下
    2021-03-31 09:40 
  • 程琼 程琼(提问者) 回复 snrtuemc 不是的,都没有设置扩展
    2021-03-31 09:46 
  • snrtuemc snrtuemc 回复 程琼(提问者) 额那就不好说了,正常是sql函数的话,都是实时的
    2021-03-31 09:58 
最佳回答
0
烟尘Lv6高级互助
发布于2021-3-31 09:14(编辑于 2021-3-31 09:26)

C1是根据B1变的还是A1变的?

如果是根据A1变的,就在A1的编辑后事件加上对C1变更的代码,就是你的代码改一下参数

如果是根据B1变的,显示值会等到焦点变更之后才变,此时直接点击提交也是不影响结果的

如果实在想改,就想办法让C1跟A1的值关联变动

image.png

这个例子是没用js事件的,左边选择完右边自动填充,公式

=if((len(C4) = 0), "", sql("数据集", "select FName from t_Item where FItemID='" + C4 + "'", 1, 1))

另一个例子比较麻烦了

首先设置一个加载结束事件,代码:

contentPane.on("cellselect", function(td) {    

  var row =contentPane.curLGP.getTDRow(td);   

  var col =contentPane.curLGP.getTDCol(td);  

  window.row=row;  

  window.col=col;  

});  

然后在单元控件的编辑后事件js

contentPane.setCellValue(col,row-1,this.getText());

这样就是选择下拉框后把显示值赋值给右侧单元格

  • 程琼 程琼(提问者) 谢谢!是根据A1变的,可以请你提供一下脚本吗?这个脚本也是在别人的帖子里抄过来的,我自己看不懂
    2021-03-31 09:17 
  • 烟尘 烟尘 回复 程琼(提问者) 没做过一次赋值两个单元格的,但是原理是一样的,同样的代码改变参数写两次
    2021-03-31 09:27 
  • 程琼 程琼(提问者) 回复 烟尘 试了一下,A1改变后,C1还是要点一下才行
    2021-03-31 09:35 
  • 4关注人数
  • 824浏览人数
  • 最后回答于:2021-3-31 09:45
    请选择关闭问题的原因
    确定 取消
    返回顶部