JS实现填写后自动移出光标,解决控件值刷新不及时

在报表的使用过程中,使用者在控件中输入数据后,点击其他按钮用来获取控件值进行传参、钻取或者运算时,经常不能马上获取道对应的值,需要点击两次才能获取到控件值,或者需要在点击按钮前,先点一下其他位置以移开光标,此时才能获取到控件值,这是因为报表不能及时识别到当前控件中已编辑结束,导致报表不能马上刷新控件值。如下图:

在解决上述问题时,我也有搜索过相关的案例,然而并不能解决我的问题,网上大部分都是通过按钮控件设置javascript事件,在点击按钮时,先将光标移出,再进行数据获取,而这个会占用了按钮的一个事件,大部分情况下,我们是需要再次添加多一个javascript事件的,而这会导致使用者点击按钮时出现两个事件选择,还要依次操作,体验感不够圆滑。同时,这种做法不能自定义UI界面,不能改变报表的全局参数进行直接的数据查询。

我在多次尝试之后,发现还可以通过其他方式解决这一问题,可以做到实时刷新控件值,进行页面数据过滤查询。

1、报表界面设计:

其中,“确定”按钮都是使用了动态参数,获取前面控件的数据,传入数据集并触发数据集再次查询,实时过滤数据,不再依赖参数面板的参数,可以由开发人员自定义整个报表界面。

2、javascript事件编辑:

优化前部分正常部署,不添加任何事件,优化后需要对应文本控件和下拉框控件写入不同的javascript事件。

(一)文本控件

代码如下:

var value = this.getValue(); 
contentPane.setCellValue(5,1,value);

(二)下拉框控件

代码如下:

//移出焦点
contentPane.curLGP.selectTDCell();

此处,文本控件和下拉框控件的javascripts事件并不一样,

文本控件:为了实时更新控件值,在文本框中用的是“编辑后”事件,获取当前控件的值,再将值赋值在当前控件,可以继续编辑;而如果使用移出光标,会导致不能继续输入,需要在光标移回来才可以继续编辑,而且移动回来后控件内的值会被全部选中,需要再次单击文本末才能实现继续编辑,体验感不够圆滑,使用获取值后再赋值的方案,就不会造成上面的问题,不需要使用者移出光标或其他操作,而且可以使报表的全局参数在实时变化,不需要做按钮的点击事件,更能方便“动态参数”直接做数据钻取。

下拉框控件:使用者选中下拉框中某个数据后,直接触发“编辑后”事件,移出光标,此处不像文本框一样获取值后再赋值,是因为下拉框控件中有很多下拉数据,获取值会导致报表卡死,无法继续工作,所以此处直接移出光标即可,使报表的全局参数在选择后直接变化,及时获取控件值。

3、效果图:

如上,就可以解决控件值刷新不及时的问题,使得报表全局参数在使用者的操作后直接更新,不需要使用者移出光标等操作,也不用暂用按钮控件中的点击一个事件,避免按钮多事件的冲突。

而上面的示例,也没有采用按钮,是直接使用“动态参数”,不通过参数面板进行数据过滤查询,直接在报表界面上设计参数查询样式,提供界面的方便性和自由设计。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值