在我开发的一个通用查询项目中想把查询结果集的显示部分采用eXtremeComponents组件来处理,但是碰到个问题,就是组件预先并不知道查询结果的列名,也就是必须解决Column列的动态显示问题。
有一种方法就是通过在jsp页面里罗列一下,但是总感觉不舒服,查文档发现eXtremeComponents有一接口AutoGenerateColumns可实现此功能,以下为具体实现步骤:
一、在应用的servlet(或struts action等)里(如sqlAction.do)实现根据SQL语句的运行结果获取字段名称列表(fieldnames)和查询结果集(results)并将其放入httpRequest的属性中
List fieldnames = 实现[获取字段名称列表]方法;
List results = 实现[获取查询结果集]方法;
httpRequest.setAttribute("fieldnames", fieldnames);
httpRequest.setAttribute("results", results);
results将作为eXtremeTable组件中属性items的值,fieldnames将用来迭代构造Column对象
二、编写类AutoGenerateColumnsImpl实现org.extremecomponents.table.core.AutoGenerateColumns接口
package org.boogie.sql.common.ec;
import java.util.Iterator;
import java.util.List;
import org.extremecomponents.table.bean.Column;
import org.extremecomponents.table.core.AutoGenerateColumns;
import org.extremecomponents.table.core.TableModel;
public class AutoGenerateColumnsImpl implements AutoGenerateColumns {
public void addColumns(TableModel model) {
List fieldnames = (List) model.getContext().getRequestAttribute(
"fieldnames");
Iterator iterator = fieldnames.iterator();
while (iterator.hasNext()) {
String fieldname = (String) iterator.next();
Column column = model.getColumnInstance();
column.setProperty(fieldname);
// column.setCell((String) columnToAdd.get(CELL));
model.getColumnHandler().addAutoGenerateColumn(column);
}
}
}
AutoGenerateColumns接口只有一个方法addColumns供实现,在此方法中通过传入的TableModel型参数model可从其Context中获取到httpRequest中的fieldnames属性值,然后根据fieldnames列表迭代构造对应Column后添加到model中
三、在显示页文件的eXtremeTable中,配置TableTag的属性items值为results,配置ColumnTag的属性autoGenerateColumns值为类AutoGenerateColumnsImpl的全路径
<ec:table
items="results"
var="result"
action="${pageContext.request.contextPath}/sqlAction.do"
imagePath="${pageContext.request.contextPath}/images/table/*.gif"
title="查询结果"
width="100%"
rowsDisplayed="5"
>
<ec:parameter name="method" value="ec"/>
<ec:row>
<ec:columns autoGenerateColumns="org.boogie.sql.common.ec.AutoGenerateColumnsImpl"/>
</ec:row>
</ec:table>
分享到:
- 2007-01-17 15:05
- 浏览 10125
- 评论(8)
- 论坛回复 / 浏览 (8 / 10156)
- 查看更多
相关推荐
"eXtremeComponents组件"是一组用于软件开发的组件,尤其在创建高效、功能丰富的用户界面时,这些组件能够极大地提升开发效率和用户体验。eXtremeComponents通常包括一系列的列表控件和其他UI元素,它们设计精良,...
5. **绑定数据**:将查询结果绑定到分页组件,显示在界面上。 6. **处理用户交互**:监听分页组件的事件,如页码变化,更新查询条件,重新执行查询并更新界面。 总之,Extreme Components的分页组件为Java Web开发...
此文档可能会讨论表格的列定义、排序、过滤、分页等功能,以及如何处理数据模型和事件监听器,以实现动态数据更新和用户交互。 4. **EC标签总结.pdf** 标签可能是指EC中的标签组件或者其他与标记和分类相关的功能...
XTable支持动态加载、分页、排序、过滤等功能,并且可以自定义列渲染,以满足各种数据展示需求。 2. **XPagingNavigator**: 为XTable提供分页导航,使得用户可以轻松浏览大量数据。 3. **XExport**: 提供数据导出...
**TableTag** 是 eXtremeComponents 中的核心组件之一,用于生成和管理表格。 ##### 3.1 Introduction - **用途**: TableTag 用于构建具有高度自定义能力的表格。 - **特点**: 支持动态数据绑定、排序、过滤等功能...
在压缩包文件“eXtremeComponents-1.0.1-with-dependencies”中,包含的不仅是分页组件本身,还有其依赖的库文件。这意味着开发者可以立即开始使用,而无需额外寻找和配置相关的依赖项。这个压缩包确保了开发环境的...
除了基础功能外,eXtremeComponents控件还提供了许多高级特性,如自定义分页样式、动态加载、多级分页等,可以根据项目需求进行选择和配置。在实际应用中,开发者还需要关注性能优化,比如使用虚拟化技术减少内存...
核心组件eXtremeTable用于以表格形式展示数据,适用于需要动态、高效展示大量信息的Web应用程序。在使用ec之前,确保系统环境满足以下要求:JDK版本至少1.3,Servlet容器需支持2.3或更高版本。 eXtremeTable通过...
通过以上详细介绍,我们可以看到eXtremeComponents不仅提供了一个强大而灵活的框架来展示数据,还支持多种自定义选项,使得开发者可以根据具体需求轻松实现各种高级功能。无论是对于新手还是有经验的开发者来说,...
ECSide,全称为Extreme Components Side,是一个开源的JSP列表组件,源于eXtremeComponents项目,但已独立发展并拥有自己的特色。这个组件专注于提供列表的显示功能,同时支持单表操作,如增、删、改、查。ECSide以...
- `rowsDisplayed`属性定义了每页显示的行数,也可在`extremecomponents.properties`配置文件中全局设置。 - `showPagination`如果设为`false`,则表格不会分页显示所有数据。 - 样式属性如`cellspacing`, `...