跳转到制定Sheet页及提交指定sheet页内容
一、跳转到指定Sheet的实现
话不多说,先上效果图
两个按钮的事件分别如下:
_g().loadSheetByName("sheet1") # 跳转至sheet1按钮事件
_g().loadSheetByName("sheet2") # 跳转至sheet2按钮事件
其核心为_g().loadSheetByName("sheet1")
,其中sheet1
参数值为sheet页的名称
。
除此之外,还有部分需求可能希望在进入页面的时候可以根据参数直接跳转到某个指定sheet页。
此时,我们可以在访问报表时在URL中增加一个指定参数,并通过上述跳转代码进行跳转,其大致操作如下:
1、在模板web属性中的填报页面设置增加加载起始事件,其中参数sheetName
的值用公式获取参数$sheetName
的值。事件代码填:_g().loadSheetByName(sheetName)
2、在访问报表的时候,在URL后面拼接参数&sheetName=sheet2
,访问时会自动跳转到sheet2页面。
二、提交指定sheet的内容
该实现所需两张数据表:
- input_test_1(C1,C2,C3)
- input_test_2(C1,C2,C3)
参数栏中,各控件解释如下:
● 文本框,控件名称为sheet_name
,用来传递参数sheet_name
的值,在实际应用过程中应该将该控件设置为不可见,本次测试为了方便演示选择可见。
● 切换至sheet1,切换至sheet2 功能如上一节描述。
● 提交sheet1,可以实现只提交sheet1页面中的内容。
● 提交sheet2,可以实现只提交sheet2页面中的内容。
● 提交当前sheet,可以实现提交当前sheet页的内容。
● 提交所有sheet,可以实现提交所有sheet页的内容。
两个sheet页及填报属性如下:
sheet1
sheet2
其中,提交条件设置如下:
FIND("sheet2",$sheet_name)>0 or len($sheet_name)==0
该条件可以限制只有参数sheet_name 中包含当前sheet的名字或该参数为空时才允许提交。
此步骤是指定sheet提交实现过程中很重要的一步。
各按钮事件如下:
切换至sheet1
this.options.form.getWidgetByName("sheet_name").setValue("sheet1");
_g().loadSheetByName("sheet1")
切换至sheet2
this.options.form.getWidgetByName("sheet_name").setValue("sheet2");
_g().loadSheetByName("sheet2")
提交sheet1
_g().parameterEl.getWidgetByName("sheet_name").setValue("sheet1");
_g().parameterCommit();
_g().verifyAndWriteReport(true);
提交sheet2
_g().parameterEl.getWidgetByName("sheet_name").setValue("sheet2");
_g().parameterCommit();
_g().verifyAndWriteReport(true);
提交当前sheet
_g().parameterEl.getWidgetByName("sheet_name").setValue("");
_g().parameterCommit();
_g().verifyAndWriteReport(false);
提交所有sheet
_g().parameterEl.getWidgetByName("sheet_name").setValue("");
_g().parameterCommit();
_g().verifyAndWriteReport(true);
其中:
- 经实际测试
_g().parameterEl.getWidgetByName("sheet_name").setValue("")
只能实现修改控件的值,实际控件关联的参数的值并未修改,所以需要执行_g().parameterCommit()
来刷新参数值。 _g().verifyAndWriteReport(true)
表示验证后提交,其中参数值为false时为提交当前sheet页,值为true时为提交全部sheet页。- 提交当前页或提交全部sheet页之前需要将sheet_name参数的值清空,否则会因为填报的提交条件限制导致无法正常提交。
当然,除此之外,你还可以通过FineReport自带的配置,将保存按钮设置为默认提交当前sheet。