`
成溪先生
  • 浏览: 11426 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

JSF表格的行列合并

    博客分类:
  • JSF
阅读更多

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页面动态创建表格

    ### 使用JSF页面动态创建表格 #### 背景与目的 在开发Web应用程序时,经常需要根据不同的数据集或用户操作动态生成表格。JavaServer Faces(简称JSF)是一种用于构建服务器端Java应用程序的标准技术,它允许开发者...

    jsf实例jsf实例 JSF学习 JSF jar包 JSF

    jsf实例 JSF学习 JSF jar包 JSF jsf实例 JSF学习 JSF jar包 JSFjsf实例 JSF学习 JSF jar包 JSF jsf实例 JSF学习 JSF jar包 JSF

    JSF上传 JSF大文件上传 JSF上传代码 JSF上传源代码

    监听器会检测文件上传的开始和结束,而处理器则负责处理每个文件块的上传,并在所有块都成功上传后将它们合并成原始文件。这个过程可能涉及到多线程处理,以提高上传效率。 为了支持这种功能,项目可能依赖了一些...

    JSP和JSF合并 共同打造完美的Web应用

    【JSP和JSF合并打造完美Web应用】 JavaServer Pages(JSP)和JavaServer Faces(JSF)是两种在Java平台上构建Web应用程序的关键技术。它们各有特点,但结合使用可以大大提高开发效率和应用程序的易维护性。在本文中...

    core jsf 1.2 jsf 核心

    JSF 1.2提供了一套丰富的预定义UI组件,如按钮、输入字段、表格等。这些组件可以通过XML(Faces配置文件)或者在JSP页面上直接声明。例如,`&lt;h:inputText&gt;`用于创建文本输入字段,`&lt;h:commandButton&gt;`用于创建提交...

    jsf第一个例子 jsf架包 jsf实例

    **JSF(JavaServer Faces)** 是一个Java平台上的用户界面框架,用于构建Web应用程序。它为开发人员提供了一种模型-视图-控制器(MVC)架构,简化了前端和后端之间的交互。JSF提供了组件库,使得创建动态、交互式的...

    JSF培训教程

    JSF培训教程,主要内容:JSF简介、JSF入门、JSF标签、JSF数据验证和转换 、JSF表格、JSF与Struts的区别

    JSF中文教程jsf

    **JSF(JavaServer Faces)** 是一个Java平台上的用户界面框架,用于构建Web应用程序。它简化了开发人员创建交互式、数据驱动的Web界面的过程。JSF提供了一个组件模型,允许开发者通过拖放组件的方式来构建用户界面...

    JSP和JSF合并 打造完美的Web层应用

    【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学习书《JSF_实战》非常好的JSF...

    JSF入门+JSF web实战+JSF2

    JavaServer Faces(JSF)是Java平台上的一种用于构建Web应用程序的MVC(Model-View-Controller)框架。它提供了一种声明式的方式来构建用户界面,简化了开发过程,并且与Java EE平台无缝集成。本系列资料包括《JSF...

    JSF Java Server Faces (JSF)框架

    JSF是一种用于构建Java Web 应用程序的标准框架(是Java Community Process 规定的JSR-127标准)。JSF(Java Server Faces)技术为开发基于网络用户界面的Java开发者提供了标准的编程接口API以及标签库。就像Struts框架...

    JSF的工作方式 JSF架构 JSF模型 JSF事件类型

    JavaServer Faces (JSF) 是一个用于构建用户界面的Java Web框架,它简化了创建和维护Web应用程序的复杂性。JSF的核心理念是提供一种组件化的编程模型,将UI元素与业务逻辑分离,使得开发者可以专注于应用的逻辑部分...

    jsf分页 jsf分页 jsf分页

    在JavaServer Faces (JSF)框架中,分页是一种常用的技术,用于处理大量数据时提供更好的用户体验。当数据集过大,一次性加载所有记录到页面上会导致性能下降且用户界面响应变慢。通过分页,我们可以将数据分成多个...

    jsf 上传 操作Excel 导入数据库中 浏览器打开Excel表格

    在IT行业中,JavaScript Server Faces(JSF)是一种用于构建企业级Web应用的Java框架,而本文将重点关注如何在JSF环境中实现Excel文件的上传、处理并将其内容导入到数据库中,以及在浏览器中预览Excel表格。...

    JSF帮助文档

    JSF组件库通常包含一系列内置组件,例如文本字段、按钮、表格等,开发者可以通过自定义组件进一步扩展这个库。JSF还支持EL(Expression Language),一种轻量级的脚本语言,用于在视图层与后台数据之间进行数据绑定...

    JSF包,jsf包,JSF包,jsf包

    **JSF(JavaServer Faces)** 是一种Java平台上的Web应用程序开发框架,它提供了一种组件化和事件驱动的方式来创建用户界面。JSF的核心概念包括组件、事件、渲染器和生命周期,这些元素共同构建了一个强大的MVC...

    精通JSF中文教程精通JSF中文教程

    JSF组件库包含一系列预定义的UI元素,如按钮、文本框、表格等,开发者可以通过声明式方式在页面上使用这些组件。每个组件都有对应的属性和事件,可以方便地进行定制和交互。 **4. Managed Beans** Managed Beans是...

    利用自定义渲染器实现JSF数据库表分页显示

    ### 使用自定义渲染器实现JSF数据库表分页显示 #### 概述 在JavaServer Faces (JSF) 应用程序中处理大量的数据时,分页是一个非常实用且必要的功能。通过合理地分页展示数据,不仅可以提高用户体验,还可以减少...

    jsf视频jsf视频0

    jsf 视频 java faces jsf 视频 java faces jsf 视频 java faces

Global site tag (gtag.js) - Google Analytics