润乾报表JSF FORM 标签中使用填报表解决方案
2016-12-02 17:23
459 查看
Jsf1.1版本本身不支持两个form的提交,所以form并列的方式也不可取。
2:可选择是否生成form。
1)当润乾填报表使用在jsf的form标签中时,选择不生成form,然后可以通过js方法遍历获取到填报的数据,将数据和其他填报套件的数据一同提交到后台处理。
2)当润乾填报表单独使用时,不嵌套在jsf的form标签中,选择生成form,润乾填报表可以填报保存数据。
目前润乾报表已经支持第二种处理方法,即选择不生成form标签。使用方法:
<f:view>
<h:form>
<f:subview
id=“a”>
<f:verbatim>
<report:html
name=“report1″
reportFileName=“mydataset.raq”
funcBarLocation=“top”
needPageMark=“yes”
needPrint=“yes”
needSaveAsWord=“yes”
submit=“保存“
generateParamForm=”no”
width=“-1″
reportEnterUrl=“add.jsf”
generateSubmitForm=“no”
exceptionPage=“/reportJsp/myError2.jsp”/>
</f:verbatim>
</f:subview>
<input
name=“get1″
value=“查看值1″
type=“button”
type=“form1″
onClick=“getInputData()”>
<input
name=“get2″
value=“查看值2″
type=“button”
type=“form1″
onClick=“getCycle()”>
</h:form>
</f:view>
遍历报表填报表中输入的数据,包括真实值,显示值,单元格与数据库字段的对应关系(单元格定义的html事件)的js:
<script type=”text/javascript”>
function getCycle(){ //cellName为扩展格的名称,n为扩展出几个,reportName为tag的name属性
_submitEditor(document.getElementById(‘report1′));
var rpt = document.getElementById(“report1″);
//获得报表的行数
var rowCount = rpt.rows.length;
//alert(rowCount);
//获得报表的列数
var colCount = rpt.rows[0].cells.length;
//alert(colCount);
for(var j=1;j<=colCount;j++){
var cname=”";
if(j==1) cname=”report1_A”;
if(j==2) cname=”report1_B”;
if(j==3) cname=”report1_C”;
if(j==4) cname=”report1_D”;
if(j==5) cname=”report1_E”;
if(j==6) cname=”report1_F”;
if(j==7) cname=”report1_G”;
for(var i=1;i<=rowCount;i++){
var cname1=cname+i.toString();
if(document.getElementById (cname1).modifiable){
var tempValue = document.getElementById (cname1).value; //获得单元格的真实值
alert(“单元格”+i+”的真实值是”+tempValue);
var xsValue = document.getElementById (cname1).innerText; //获得单元格的显示值
alert(“单元格”+i+”的显示值是”+xsValue);
var dbfiled = document.getElementById (cname1).dbfiled; //获得单元格的定义的html事件名称
alert(“单元格”+i+”的数据字段是”+dbfiled);
}
}
}
}
//–>
</script>
需求
润乾报表的标签需要在jsf页面中和其他填报控件一起使用,润乾报表负责展现录入部分数据,并且这部分数据和页面的其它控件的数据存在前台和后台的交互。问题
润乾报表在前台会生成自己的form,嵌入到的jsf的form标签中后,出现两个form嵌套的情况,造成报表无法填报和提交。Jsf1.1版本本身不支持两个form的提交,所以form并列的方式也不可取。
可行解决方案:
1:填报表解析后本身不作为一个form,当我们点击提交的时候动态生成一个iframe,这个iframe中生写一个form,再把报表数据写到这个form中去做提交保存操作。2:可选择是否生成form。
1)当润乾填报表使用在jsf的form标签中时,选择不生成form,然后可以通过js方法遍历获取到填报的数据,将数据和其他填报套件的数据一同提交到后台处理。
2)当润乾填报表单独使用时,不嵌套在jsf的form标签中,选择生成form,润乾填报表可以填报保存数据。
实现的解决方案:
对于其它填报控件中数据需要和润乾填报的数据进行交互的情况,前台获取润乾填报表数据,跟用户自己开发的填报控件数据一同提交不失为一种很好的方法,因为这样数据可以直接进入客户的业务处理类进行交互处理。目前润乾报表已经支持第二种处理方法,即选择不生成form标签。使用方法:
<f:view>
<h:form>
<f:subview
id=“a”>
<f:verbatim>
<report:html
name=“report1″
reportFileName=“mydataset.raq”
funcBarLocation=“top”
needPageMark=“yes”
needPrint=“yes”
needSaveAsWord=“yes”
submit=“保存“
generateParamForm=”no”
width=“-1″
reportEnterUrl=“add.jsf”
generateSubmitForm=“no”
exceptionPage=“/reportJsp/myError2.jsp”/>
</f:verbatim>
</f:subview>
<input
name=“get1″
value=“查看值1″
type=“button”
type=“form1″
onClick=“getInputData()”>
<input
name=“get2″
value=“查看值2″
type=“button”
type=“form1″
onClick=“getCycle()”>
</h:form>
</f:view>
遍历报表填报表中输入的数据,包括真实值,显示值,单元格与数据库字段的对应关系(单元格定义的html事件)的js:
<script type=”text/javascript”>
function getCycle(){ //cellName为扩展格的名称,n为扩展出几个,reportName为tag的name属性
_submitEditor(document.getElementById(‘report1′));
var rpt = document.getElementById(“report1″);
//获得报表的行数
var rowCount = rpt.rows.length;
//alert(rowCount);
//获得报表的列数
var colCount = rpt.rows[0].cells.length;
//alert(colCount);
for(var j=1;j<=colCount;j++){
var cname=”";
if(j==1) cname=”report1_A”;
if(j==2) cname=”report1_B”;
if(j==3) cname=”report1_C”;
if(j==4) cname=”report1_D”;
if(j==5) cname=”report1_E”;
if(j==6) cname=”report1_F”;
if(j==7) cname=”report1_G”;
for(var i=1;i<=rowCount;i++){
var cname1=cname+i.toString();
if(document.getElementById (cname1).modifiable){
var tempValue = document.getElementById (cname1).value; //获得单元格的真实值
alert(“单元格”+i+”的真实值是”+tempValue);
var xsValue = document.getElementById (cname1).innerText; //获得单元格的显示值
alert(“单元格”+i+”的显示值是”+xsValue);
var dbfiled = document.getElementById (cname1).dbfiled; //获得单元格的定义的html事件名称
alert(“单元格”+i+”的数据字段是”+dbfiled);
}
}
}
}
//–>
</script>
总结:
数据交互即可后台处理,也可前台处理,以上方案适用于jsf使用自定义填报套件和润乾填报表一同进行数据保存处理或者jsp中form中使用润乾填报表的业务场景相关文章推荐
- 关于使用Asp.net导出Excel,遭遇“LinkButton必须放在一个具有runat=server的标签的Form”的解决方案。
- jsf xhtml form中 页面中使用 html标签
- 润乾报表分页计算标签tobig使用
- Spring MVC 复杂表单分部提交--使用AbstractWizardFormController解决方案
- jsf表达式和jstl的标签混合使用原则
- [网摘]使用fieldset、label标签制作form表单
- 润乾报表使用心得
- vs2003自带的报表使用load("rpt.rpt")方式,显示不出报表工具的图片解决方案
- JSF标签的使用2
- JSF中标签的使用
- 在.jnlp文件中使用"all-permissions"标签的解决方案
- 润乾报表中行式填报表如何实现批量删除
- 使用Oracle数据源的报表输出打印解决方案
- jsf 标签与 jsp 标签的使用区别
- 使用fieldset、label标签制作form表单
- 使用Struts2 AJAX TAG的 formFilter标签
- 使用AbstractWizardFormController提交复杂表单的验证解决方案
- 使用jsf遇到的第2个问题,sub form,还是多个h:form?
- 使用eclipse在jsp上显示水晶报表(五)viewer标签应用
- jsf中按钮标签使用图片链接的注意事项: