- 浏览: 618666 次
- 性别:
- 来自: 杭州,长沙
-
文章分类
- 全部博客 (279)
- Java (30)
- Jsp、Servlet (18)
- Web前端 (56)
- Oracle (31)
- SqlServer (1)
- Jetty (3)
- Tomcat (6)
- Weblogic (11)
- Websphere (2)
- Struts2 (13)
- Spring (5)
- Ibatis (8)
- Hibernate (3)
- Webservice (1)
- C/C++ (2)
- Linux (13)
- Android (1)
- 正则表达式 (3)
- 网络组建 (3)
- 软件工程 (11)
- IDE使用技巧 (20)
- Windows操作技巧 (18)
- 养生之道 (1)
- 杂七杂八 (15)
- 心理保健 (1)
最新评论
-
50854319:
elements[i] = tagArr[i]; 这个需要修改 ...
document.getElementsByName在IE下的bug解决 -
mengsina:
通过楼主的介绍,能够启动client了。但是又遇到了cisco ...
(转)Cisco Systems, Inc. VPN使用过程中常见问题解决方案 -
zzz_robinson:
谢谢,关闭-启动-启动。这个循序对的,否则每次都提示服务没打开 ...
(转)Cisco Systems, Inc. VPN使用过程中常见问题解决方案 -
wuchunjiesp:
总算解决了,THANK楼主,空值问题是TYPE里面参数类型定义 ...
(原创)Ibatis2调用数据库存储过程的相关示例 -
wuchunjiesp:
存储里面是这样的
FOR I IN 1..P_GOODSDI ...
(原创)Ibatis2调用数据库存储过程的相关示例

如图所示:近日项目中需要将一个动态树型结构以表格动态合并行形式实现,目前的实现方式是通过后台输出tr,td,总感觉不是很好,我想请教一下,是否有这种已经做好的通用转换jar包或是js包,通过传入一个tree对象,可以转换成页面table形式呢?
目前这个tree对象从后台递归查询出来,各节点可提供以下几个属性:
1,ifLeaf: 0 分项 1 细则
2,colspan: 当前节点需要合并的列数
3,rowspan: 当前节点需要合并的行数
对于分项,colspan总是为1,rowspan需要动态统计;对于细则,colspan需要动态统计,rowspan总是为1
这个是可以通过一个sql递归查询一次性获得。
SELECT RULE_ID,
PARENT_ID,
RULE_CONTENT,
HIGH_SCORE,
LOWER_SCORE,
LEVEL_SCORE,
IS_LOW_RULE,
INIT_SCORE,
CASE WHEN IS_LOW_RULE = 1 THEN 1 ELSE
(SELECT COUNT(*)
FROM BE_T_EVA_RULES
WHERE IS_VALID = 1 AND IS_LOW_RULE = 1
AND MODEL_ID = $value$
START WITH PARENT_ID = ber.RULE_ID
CONNECT BY PRIOR RULE_ID = PARENT_ID)
END AS ROWSPAN,
CASE WHEN IS_LOW_RULE = 0 THEN 1 ELSE
(SELECT MAX(LEVEL)
FROM BE_T_EVA_RULES
WHERE IS_VALID = 1
AND MODEL_ID = $value$
START WITH PARENT_ID = 0
CONNECT BY PRIOR RULE_ID = PARENT_ID) - LEVEL+1
END AS COLSPAN
FROM BE_T_EVA_RULES ber
WHERE IS_VALID = 1
AND MODEL_ID = $value$
START WITH PARENT_ID = 0
CONNECT BY PRIOR RULE_ID = PARENT_ID
ORDER SIBLINGS BY IS_LOW_RULE, ORDER_ID, RULE_ID
在这里,主要请教一下使用JS,能否根据这样一个tree对象,封装成一个通用js,在页面调用一下,就能立即展现的JS通用包。
以下是该页面解析后源代码,配合找出规律
<table width="444" border="1" bordercolor="#0033FF">
<tr>
<td width="91" rowspan="11"><strong>分项一</strong></td>
<td width="95" rowspan="5"><strong>分项一一</strong></td>
<td width="107" rowspan="2"><strong>分项一一一</strong></td>
<td width="123">细则一一一一</td>
</tr>
<tr>
<td>细则一一一二</td>
</tr>
<tr>
<td colspan="2">细则一一一</td>
</tr>
<tr>
<td colspan="2">细则一一二</td>
</tr>
<tr>
<td colspan="2">细则一一三</td>
</tr>
<tr>
<td rowspan="2"><strong>分项一二</strong></td>
<td colspan="2">细则一二一</td>
</tr>
<tr>
<td colspan="2">细则一二二</td>
</tr>
<tr>
<td colspan="3">细则一一</td>
</tr>
<tr>
<td colspan="3">细则一二</td>
</tr>
<tr>
<td colspan="3">细则一三</td>
</tr>
<tr>
<td colspan="3">细则一四</td>
</tr>
<tr>
<td colspan="4">细则一</td>
</tr>
<tr>
<td colspan="4">细则二</td>
</tr>
</table>
根据上面的sql语句查询出来的结果帖图如下,其排序正好与源代码中画tr,td的顺序完全一致

现将如何在页面迭代输出,并动态合并行列代码贴上:
<table align="center" width="100%" border="2">
<thead>
<tr>
<th colspan="<s:property value='#request.maxColNum'/>">细则名称</th>
</tr>
</thead>
<tbody>
<s:if test="#request.evaRuleses != null && 0 != #request.evaRuleses.size()">
<s:set name="preErType" value="-1"/>
<s:iterator value="#request.evaRuleses" id="er" status="stuts">
<s:if test="0 eq rowspan"></s:if>
<s:elseif test="-1 == #preErType">
<tr>
<td colspan="<s:property value='colspan'/>" rowspan="<s:property value='rowspan'/>"><s:property value="ruleContent"/></td>
<s:set name="preErType" value="isLowRule"/>
</s:elseif>
<s:elseif test="0 == #preErType">
<td colspan="<s:property value='colspan'/>" rowspan="<s:property value='rowspan'/>"><s:property value="ruleContent"/></td>
<s:set name="preErType" value="isLowRule"/>
</s:elseif>
<s:elseif test="1 == #preErType">
</tr>
<tr>
<td colspan="<s:property value='colspan'/>" rowspan="<s:property value='rowspan'/>"><s:property value="ruleContent"/></td>
<s:set name="preErType" value="isLowRule"/>
</s:elseif>
</s:iterator>
</tr>
</s:if>
<s:else>
<tr class="rowOdd" onMouseOver="this.className='rowHover'" onMouseOut="this.className='rowOdd'">
<td colspan="6" align="center"> 对不起,该模板没有细则内容!</td>
</tr>
</s:else>
</tbody>
</table>
浏览器根据上面代码解析后效果如下:

此方法不适应于存在空枝点的情形,如有需要,请自行修正!
评论
2 楼
iaimstar
2009-10-20
我一看见树就有想死的冲动
1 楼
抛出异常的爱
2009-10-20
我的项目里有人曾
横向的合并格子
用jquery找到要删除td
在前一个兄弟的rowspan加一就哆了
侧面的没作过.
可以自己写一个.
只要不是通用的
难度不是很大.
横向的合并格子
用jquery找到要删除td
在前一个兄弟的rowspan加一就哆了
侧面的没作过.
可以自己写一个.
只要不是通用的
难度不是很大.
发表评论
-
List of mine types
2010-08-03 18:44 1359List of mine types &qu ... -
document.getElementsByName在IE下的bug解决
2010-06-17 09:23 3819那天封装一个ajax边输入边提示标签,在JS脚本中使用到了do ... -
JS文件中获取contextPath的方法
2010-06-11 15:48 3184function getContextPath() { ... -
javascript获取当前鼠标在屏幕上的会标(转)
2010-06-11 14:35 1035<script>function mouseMov ... -
HTML页面元素加载顺序研究报告(5)----Script标签在Firefox下对背景图片的影响
2010-06-09 13:09 2296在上一节中发现,背景图片似乎还有些需要研究的地方。 代码 ... -
HTML页面元素加载顺序研究报告(4)----用JavaScript插入图片
2010-06-09 13:08 34294.下面我们试试用Javascript插入图片 代码: ... -
HTML页面元素加载顺序研究报告(3)----Script标签与背景图片(转)
2010-06-09 12:08 24503、看下Javascript对图片加载顺序的影响 采用和 ... -
HTML页面元素加载顺序研究报告(2)----背景图片(转)
2010-06-09 11:39 27032、接下来考察背景图片的加载: 一般来说,添加背景图片有 ... -
HTML页面元素加载顺序研究报告(1)----简单Div罗列(转)
2010-06-09 11:37 1935一直没有意识到HTML页面的元素加载顺序有什么重要性,至多 ... -
提高网站访问速度的34条军规二 (转)
2010-06-09 11:32 100818 预先加载组件 (Preload ... -
提高网站访问速度的34条军规一 (转)
2010-06-09 11:28 13711 减少HTTP请求数量 (Minimize HTTP Req ... -
JavaScript输出中文乱码的解决方法
2010-06-08 16:27 1455当页面中包含的js文件中有中文输出时,在页面中会出现乱码. ... -
javascript动态循环添加行及行中的事件调用带参数的函数
2010-06-03 16:33 1973今天在做一个动态循环添加行,并在新行添加onclick事件,调 ... -
(转)a href=#与 a href=javascript:void(0) 的区别
2010-02-23 15:53 2278<a href="#"> 点击 ... -
Javascript实现web表格宽度拖动(分固定宽度和不固定宽度)
2009-06-30 19:47 2118<html><head><tit ... -
JSeclipse最新的update地址
2009-03-30 10:22 1503http://www.interaktonline.com/P ... -
Javascript窗口与提示大全
2009-03-19 15:40 1189//-----------按钮提示框----------// ... -
web标准:div+css命名规则
2009-03-16 11:41 1226SEO(搜索引擎优化)有很多工作要做,其中对代码的优化是一个很 ... -
四种悬浮DIV提示效果
2009-03-11 09:55 7160<html> <head> <t ... -
javascript中数组去除重复值
2008-09-08 19:44 3454<script> Array.prototyp ...
相关推荐
js做的树型结构,应该是很好的,javascript作的树型结构javascript作的树型结构javascript作的树型结构javascript作的树型结构javascript作的树型结构javascript作的树型结构javascript作的树型结构javascript作的树型...
DataWindow树型控件是一种特殊的控件,它允许数据以层次结构的形式展现,类似于Windows操作系统中的文件系统浏览器。这种控件对于显示具有层级关系的数据非常有用,例如部门结构、产品目录或组织架构。 2. **TREE_...
在JavaScript开发中,树型表格控件是一种常见且实用的元素,它允许用户以树状结构展示数据,常用于组织层次分明的数据,如目录结构、组织架构或分类信息。本项目是一个简单的JS实现的树型表格控件,适用于快速原型...
在IT领域,树型控件(Tree View Control)是一种常见的用户界面元素,广泛应用于各种操作系统和应用程序中。这种控件以树状结构显示数据,通常包含可展开/折叠的节点,便于用户浏览和操作层次化的信息。在"变色的...
自动编号功能的加入,让树型框的信息展现更加直观,也为后续的程序逻辑处理提供了方便。 易语言的树型框扩充源码不仅仅提供给开发者这些实用的子程序,它更深层次的意义在于,它能够帮助程序员学习和实践面向对象...
树型结构算法树型结构算法树型结构算法树型结构算法
### 知识点总结:《树型自动机技术与应用》——树型自动机的经典理论书籍 #### 一、引言 《树型自动机技术与应用》是一本由多位国际知名学者共同编写的经典著作,它深入探讨了树型自动机的基础理论和技术应用。...
树型结构通常用于展现层次化信息,如文件系统、组织结构或导航菜单。在网页应用中,它可以帮助用户更直观地理解和操作复杂的数据关系。 首先,创建一个jQuery树型结构的基本步骤包括以下几个方面: 1. **HTML结构*...
AJAX的核心是JavaScript对象XMLHttpRequest,它允许前端向服务器发送请求并接收响应,而无需刷新整个页面。通过AJAX,开发者可以创建更高效、更快速、更具互动性的Web应用。 【标签】"树型菜单" 是一种常见的网页...
8. **数据结构与交互**:在实际实现中,树型菜单的数据结构可能是JSON对象或XML,其中包含节点信息(如ID、文本、子节点数组等)。JavaScript代码负责解析这些数据并构建DOM元素,同时监听事件以响应用户的展开、...
在Bootstrap中,表格(Table)是常见的数据展示方式,但默认的表格功能较为基础,不支持复杂的布局和交互。针对这一需求,开发者们创建了各种插件来增强Bootstrap表格的功能,比如“Bootstrap树型表格和多标题表格”...
其中,树型列表控件是一种常用且功能强大的控件,它能够以层级结构展示数据,便于用户浏览和操作。然而,VC++的标准控件库MFC(Microsoft Foundation Classes)中的CListCtrl类默认并不支持树型元素的显示。为了实现...
树型论坛树型论坛树型论坛树型论坛树树型论坛型论坛树型论坛
易语言树型框排序源码,树型框排序,SortChildren,TreeView_GetChild,TreeView_GetNextSibling,取文本地址,SendMessage,CompareFunc,SendMessageTree,SendMessageA,lstrcmpA
节点可以通过 TreeNode 对象进行操作,包括添加、删除和修改。 要自动根据数据集生成树型结构,你需要遵循以下步骤: 1. **连接数据源**:首先,创建一个数据集,如 TClientDataset 或 TTable,用来存储你的层次化...
在Java编程中,树型菜单是一种常见的用户界面元素,它以层次结构展示数据,便于用户进行导航和操作。本文将详细讲解如何使用Java来构建一个动态的、可交互的树型菜单,包括从数据库获取数据、创建树节点、实现添加和...
它以节点和分支的形式呈现,用户可以通过展开和折叠节点来查看或隐藏子级菜单。这种菜单设计能够帮助用户快速理解和探索多层关系,尤其适用于大型网站和应用程序的导航系统。 “超酷”一词意味着这些树型菜单在视觉...
同时,为了保持状态的一致性,还需要维护一个数据结构(如JSON对象)来存储树的状态。 在“简单好用的JS树型菜单”中,设计的核心在于实现以下功能: 1. **节点展开与折叠**:当用户点击节点时,通过JavaScript...
1. 创建与初始化:在易语言中创建树型框,首先要声明一个树型框对象,并进行初始化设置,如设定初始显示的节点、是否允许多选、是否显示复选框等属性。 2. 添加与删除节点:在程序运行过程中,可以动态添加或删除...
树型论坛下载-买料卖料论坛源码-php最新版树型论坛源码-全静态树型论坛程序-网投源码-网投程序-股票程序源码-手机注册程序源码-会员取料系统程序源码 演示地址:http://www.006670.com