本帖最后由 susie 于 2015-8-30 09:58 编辑
1.问题描述 当一张报表展示后需要对其中某些行进行删除,并且需要连接到数据库对数据表中的数据进行修改。因为帆软中没有现成的功能针对此项需求,因此需要连接多个功能进行开发。 2.实现思路 首先需要利用复选框对表中数据进行选定,然后通过一个按钮调用填报功能进行数据的删除。但因为复选框只能传值不能对页面的静态数据进行删除,因此还需要对页面进行刷新。但如果页面含有参数是通过参数查询后的页面则需要在刷新的同时传递当前页面参数。具体实现方法如下。 3.示例 这张报表是为了查看图书信息创建的展现报表,因此只简单展现图书信息,在每一行最后增加一个单元格,设置为复选框控件。为了展现传递参数的过程,这里增加了通过参数进行筛选的过程。在报表适当位置增加删除按钮。为了让读者更清楚地看到数据库中数据的变化,我们用已完成权重来展现数据库中所有权重和。 3.1打开报表 将书本信息分别展现在对应的字段下,在最后新增一个单元格设置为复选框控件。再在合适位置增加按钮控件,按钮文本为:删除。 3.2编辑按钮控件 我们需要通过按钮控件调用报表的填报事件,因此需要编辑按钮控件的事件。新增点击事件,编写Js语句:_g().writeReport(); 3.3 编辑报表填报属性 首先设置填报属性,点击模板à填报属性编辑填报事件,此处是通过书本的ID实现删除,因此将ID当做主键,选择类型为删除提交。此处为了演示方便只对一张数据表进行了操作。如果在实际应用当中涉及到多张数据表的操作可以通过增加事件来实现。经过测试,该过程非常稳定,可以省掉很多编写数据库存储过程或者编写触发的过程。
然后设置提交条件,点击提交条件,类型是公式,然后编写公式:F3 == 'true',F3 == true 此处的F3是复选框单元格所在位置,两句公式之间用‘or’来连接。 3.4增加参数查询功能 到3.3这一步就已经成功完成了删除功能,演示图片如下。 可以看到经过删除后虽然数据库中的数据发生了变化,但是因为复选框没有在页面删除静态数据的功能,页面上的数据还是没有发生变化的,需要重新刷新后才可以看到效果。因为需要在报表的Web属性里增加刷新页面的功能。但如果该页面是带有参数的,并且是在带参查询后进行的删除操作,则需要刷新页面时带上当前页面的参数。以下就是带参刷新的编写方法。
为了方便读者查看,我们为报表增加了参数页面。并且将整行报表下移一行,在A1单元格写入:=$f,此处的f是进行筛选的参数。且为了方便查看我们将点击查看前不显示正文内容的勾选取消。 3. 5编辑报表Web属性 单击模板à报表Web属性à填报页面设置,将设置修改为:为该模板单独设置。在事件设置中新增填报成功后事件。
编写Js语句,首先新增Js参数,f,f在此刻等于A1单元格(注意,传参的这个单元格只能在顶端,不能在展现数据的单元格下端,否则会报错,如果需要多个查询参数可以分别写进不同的单元格),然后编写语句:window.location.href=FR.cjkEncode("${servletURL}?reportlet=Bookshow.cpt&op=write&finishrate="+f);若要传递多个参数则继续在id后添加”&a=”+a+”&b=”+b类似的语句。 注意,此处需要把填报属性中的填报条件修改为F4=‘true’ 3.6保存预览 保存报表预览,查询权重为17的书本,报表显示为:孽海花和霍乱时期的爱情。A1单元格显示此刻查询参数:17。勾选霍乱时期的爱情,点击删除按钮,该选项被删除,页面被刷新,此刻参数框仍然显示刚才查询的参数。
|