JSF1.2对于表格的行列合并支持,并不太好。
花点时间,还是把这问题摆平吧,毕竟行列合并的用处比较多,借鉴网上的一段程序,修改了一下,也算一个解决方法。
思路:先将数据全部取出,在datatable中显示出来,然后在前端将内容相同的行进行合并,可以使用jQuery。列合并类之。
//函数说明:合并指定表格(表格id为table_id)指定列(列数为table_colnum)的相同文本的相邻单元格
//参数说明:table_id 为需要进行合并单元格的表格的id。如在HTMl中指定表格 id="data" ,此参数应为 #data
//参数说明:table_colnum 为需要合并单元格的所在列。为数字,从最左边第一列为1开始算起。
//参数说明:cols 表示该数组元素表示的列的合并的行数与 table_colnum一样。如table_colnum列第1行至第3行进行了合并,则cols中的所有列也在1行和3行之间进行合并操作。
//参数说明:tag表示是否要进行合并
function table_rowspan(table_id,table_colnum, cols, tag){
table_firsttd = "";
table_currenttd = "";
table_SpanNum = 0;
table_Obj = jQuery(table_id + " tr td:nth-child(" + table_colnum + ")");
var table_othertds = new Array();
if(cols.length > 0){
for(var n=0; n<cols.length; n++){
table_othertd = jQuery(table_id + " tr td:nth-child(" + cols[n] + ")");
table_othertds[n] = table_othertd;
}
var j = 0;
table_Obj.each(function(i){
j = i;
if(i==0){
table_firsttd = jQuery(this);
table_SpanNum = 1;
}else{
table_currenttd = jQuery(this);
if(table_firsttd.text()==table_currenttd.text()){
table_SpanNum++;
if(tag){
table_currenttd.hide(); //remove();
table_firsttd.attr("rowSpan",table_SpanNum);
}
}else{
for(var m=0; m<table_othertds.length; m++) {
otherrowspan(table_othertds[m], table_SpanNum, i-table_SpanNum);
}
table_firsttd = jQuery(this);
table_SpanNum = 1;
}
}
});
if(j>0){
for(var m=0; m<table_othertds.length; m++) {
otherrowspan(table_othertds[m], table_SpanNum, j-table_SpanNum+1);
}
}
}
//函数说明:合并指定表格的列(表格id为table_id),从 beginIndex行开始,共合并spanNum行
//参数说明:table_othertd 为需要进行合并的列的jQuery对象。
//参数说明:beginIndex 表示从该行开始合并。
function otherrowspan(table_othertd, spanNum, beginIndex){
table_firsttd = "";
table_currenttd = "";
table_SpanNum = 0;
table_othertd.each(function(i){
if(i==beginIndex){
table_firsttd = jQuery(this);
table_SpanNum = 1;
}else if(i>beginIndex && i<spanNum+beginIndex){
table_currenttd = jQuery(this);
if(table_firsttd.text()==table_currenttd.text()){
table_SpanNum++;
table_currenttd.hide(); //remove();
table_firsttd.attr("rowSpan",table_SpanNum);
}else{
table_firsttd = jQuery(this);
table_SpanNum = 1;
}
}
});
}
还有一种情况:表格中某列的合并边界与另一列保持一致,可以用下面的方法
//函数说明:合并指定表格(表格id为table_id),将col2列的合并情况与col1一样
//参数说明:table_id 为需要进行合并单元格的表格的id。
function spanRowLikeSomeone(table_id, col1,col2){
var smallClass = jQuery(table_id + " tr td:nth-child(" + col1 + ")");
var totalRate = jQuery(table_id + " tr td:nth-child(" + col2 + ")");
smallClass.each(function(i){
var spanNum = jQuery(this).attr("rowSpan");
var isHidden = jQuery(this).is(":hidden");
totalRate.each(function(j){
if(j==i){
jQuery(this).attr("rowSpan",spanNum);
if(isHidden){
jQuery(this).hide();
}
}
});
}
}
对于var isHidden = jQuery(this).is(":hidden");这行代码需要说明一下,col1合并的时候不是将内容相同的行删除,而是隐藏,否则这个方法是不会起作用的。
由于我对jQuery不熟,可能代码不够严谨。
分享到:
相关推荐
### 使用JSF页面动态创建表格 #### 背景与目的 在开发Web应用程序时,经常需要根据不同的数据集或用户操作动态生成表格。JavaServer Faces(简称JSF)是一种用于构建服务器端Java应用程序的标准技术,它允许开发者...
jsf实例 JSF学习 JSF jar包 JSF jsf实例 JSF学习 JSF jar包 JSFjsf实例 JSF学习 JSF jar包 JSF jsf实例 JSF学习 JSF jar包 JSF
监听器会检测文件上传的开始和结束,而处理器则负责处理每个文件块的上传,并在所有块都成功上传后将它们合并成原始文件。这个过程可能涉及到多线程处理,以提高上传效率。 为了支持这种功能,项目可能依赖了一些...
【JSP和JSF合并打造完美Web应用】 JavaServer Pages(JSP)和JavaServer Faces(JSF)是两种在Java平台上构建Web应用程序的关键技术。它们各有特点,但结合使用可以大大提高开发效率和应用程序的易维护性。在本文中...
JSF 1.2提供了一套丰富的预定义UI组件,如按钮、输入字段、表格等。这些组件可以通过XML(Faces配置文件)或者在JSP页面上直接声明。例如,`<h:inputText>`用于创建文本输入字段,`<h:commandButton>`用于创建提交...
**JSF(JavaServer Faces)** 是一个Java平台上的用户界面框架,用于构建Web应用程序。它为开发人员提供了一种模型-视图-控制器(MVC)架构,简化了前端和后端之间的交互。JSF提供了组件库,使得创建动态、交互式的...
JSF培训教程,主要内容:JSF简介、JSF入门、JSF标签、JSF数据验证和转换 、JSF表格、JSF与Struts的区别
**JSF(JavaServer Faces)** 是一个Java平台上的用户界面框架,用于构建Web应用程序。它简化了开发人员创建交互式、数据驱动的Web界面的过程。JSF提供了一个组件模型,允许开发者通过拖放组件的方式来构建用户界面...
【JSP和JSF合并:打造完美的Web层应用】 Java Server Pages(JSP)和JavaServer Faces(JSF)是Java平台上的两种重要技术,它们分别处理Web应用的不同层面。JSP主要负责后端逻辑处理,而JSF则专注于前端表现层的...
《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF...
JavaServer Faces(JSF)是Java平台上的一种用于构建Web应用程序的MVC(Model-View-Controller)框架。它提供了一种声明式的方式来构建用户界面,简化了开发过程,并且与Java EE平台无缝集成。本系列资料包括《JSF...
JSF是一种用于构建Java Web 应用程序的标准框架(是Java Community Process 规定的JSR-127标准)。JSF(Java Server Faces)技术为开发基于网络用户界面的Java开发者提供了标准的编程接口API以及标签库。就像Struts框架...
JavaServer Faces (JSF) 是一个用于构建用户界面的Java Web框架,它简化了创建和维护Web应用程序的复杂性。JSF的核心理念是提供一种组件化的编程模型,将UI元素与业务逻辑分离,使得开发者可以专注于应用的逻辑部分...
在JavaServer Faces (JSF)框架中,分页是一种常用的技术,用于处理大量数据时提供更好的用户体验。当数据集过大,一次性加载所有记录到页面上会导致性能下降且用户界面响应变慢。通过分页,我们可以将数据分成多个...
在IT行业中,JavaScript Server Faces(JSF)是一种用于构建企业级Web应用的Java框架,而本文将重点关注如何在JSF环境中实现Excel文件的上传、处理并将其内容导入到数据库中,以及在浏览器中预览Excel表格。...
JSF组件库通常包含一系列内置组件,例如文本字段、按钮、表格等,开发者可以通过自定义组件进一步扩展这个库。JSF还支持EL(Expression Language),一种轻量级的脚本语言,用于在视图层与后台数据之间进行数据绑定...
**JSF(JavaServer Faces)** 是一种Java平台上的Web应用程序开发框架,它提供了一种组件化和事件驱动的方式来创建用户界面。JSF的核心概念包括组件、事件、渲染器和生命周期,这些元素共同构建了一个强大的MVC...
JSF组件库包含一系列预定义的UI元素,如按钮、文本框、表格等,开发者可以通过声明式方式在页面上使用这些组件。每个组件都有对应的属性和事件,可以方便地进行定制和交互。 **4. Managed Beans** Managed Beans是...
### 使用自定义渲染器实现JSF数据库表分页显示 #### 概述 在JavaServer Faces (JSF) 应用程序中处理大量的数据时,分页是一个非常实用且必要的功能。通过合理地分页展示数据,不仅可以提高用户体验,还可以减少...
jsf 视频 java faces jsf 视频 java faces jsf 视频 java faces