[2007-01-21 18时发布]ecside 1.0rc1: 列表组件eXtremeComponents全面增强版ecside介绍:~~~~~~~~~~~~~~~~~
[2007-01-21 18时发布]ecside 1.0rc1: 列表组件eXtremeComponents全面增强版
ecside介绍:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ecside是一个开源的列表组件。
他源自著名开源列表组件 eXtremeComponents (http://www.extremecomponents.org),
但现在已经脱离eXtremeComponents,独立发展(仍有大量代码来自 eXtremeComponents)。
“做最实用易用的列表组件”是ecside最终的目标。
作者: fins ( name: Wei Zijun??? email:fins@163.com?? blog:http://fins.iteye.com )
在使用前,请阅读一下以下信息,以帮助您了解您要使用的将是一个多么不成熟的东西(但它会有成熟的一天,而且那天不会远 呵呵):
1 ecside不能和原始版本的 eXtremeComponents 同时使用,且不保证能与原先使用 eXtremeComponents 的系统兼容,请见谅。
2 目前只支持GBK编码的应用,请见谅。
3 目前只在IE6 和FireFox2 上进行过测试,不保证兼容其他(版本)浏览器,请见谅。
4 目前提供的样式风格巨丑无比,请见谅。
5 目前没有完备的文档和例子,请见谅。
6 代码没有注释,没有测试用例,请见谅。
7 没有很好的版本控制,没有构建脚本,请见谅。
8 拥有无数未知的bug,请见谅。
ecside发布地址:
http://fins.iteye.com/blog/40190
ecside发布地址:
http://fins.iteye.com/blog/40190
ecside圈子:
http://ecside.iteye.com/
ecside综合讨论专用帖
http://fins.iteye.com/blog/48723?
其他出色的列表组件(有些是收费的):
eXtremeComponents原始版 ( http://www.extremecomponents.org )
dhtmlXGrid ( http://scbr.com/docs/products/dhtmlxGrid/ )
displaytag ( http://displaytag.sourceforge.net )
nitobi grid ( http://www.nitobi.com/products/grid/ )
ActiveWidgets gird ( http://www.activewidgets.com/grid/ )
rico livegrid ( http://openrico.org/rico/livegrid.page )
?~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
主要增强的功能:
1 可设置工具条位置(上 下 或 不显示)
2 可设置工具条内容(显示哪些 不显示哪些)
3 可设置工具条上各个功能按钮的相对位置
4 增加了调整页大小的选择框,并可自定义选择框内的内容
5 增加了带有邻近页面的导航条
6 增加了可跳转到指定页面的跳转框
7 增加了当前选中行高亮
8 为ec:table 增加了 excludeParameters 和 includeParameters 属性,可以实现更快捷简便的“参数保留/不保留”功能
9 可添加自定义的html代码到工具条内 或其他位置
10 可手动调整列宽
11 增加了“列表内部滚动条”(实现列表头固定,列表体滚动的功能)
12 为ec:row和ec:column 添加更多的html事件支持,现支持:onmouserover onmouserout onclick ondbclick
13 为ec:table ec:row ec:column增加了自定义扩展属性功能
14 增加 ec:extendrow 标签,实现列表扩展行的功能
15 增加shadowRow(影子行)功能:每行下面可以再加一个子行 这个行里显示什么可以由大家自己定义
16 增加页面变量 ${TOTALROWCOUNT} 用来标示当前纪录在全部记录中的行数
17 增加了打印功能(尚不完善)
18 ec:column属性增加 ellipsis ,实现单元格内数据过长的时候 自动截短并加"..."的功能(ie only)
19 实现了跨列的列表头
20 统计栏的标题格可跨列
21 增加了若干种cell 和 headerCell,例如checkbox radio
22 取消了imagePath属性,样式相关的图片信息全部提入css内
23 重(第4声)用了js 和css ,很多功能用js来实现
24 支持了ajax翻页
25 支持预查询功能,在察看第n页的时候,把n+1页的数据也查询出来(隐藏着)备用,加快查看下一页的速度
26 将导出excel所使用的组件由poi切换成了 jxl
27 xls导出方式修改 原始的导出是导出的vo/map里的原始数值 现在是导出页面实际显示的内容
28 增加简捷导出方式 (通过ec:table的 xlsFileName pdfFileName csvFileName属性)
29 支持pdf中文导出。
30 代码进行了大规模的重构
31 增加了很多ajax相关特性
32 实现了可编辑列表功能 以及cell的映射功能
... ...
更新日志:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
新增加的特性通常都在 demo.do.jsp这个例子里进行演示。
===============================
2007-01-21 15点
===============================
对于以下更新,demo.do.jsp进行了修改,大家看看例子可能会更好理解.
1) 实现了cell的映射功能(详见示例的性别 和 角色列),用法:
了一个简单的小标签 用来从map生成 select的option列表。
<ec:options tagattributes="附加的html属性" defaultkey="默认选中的option的value" items="MAP在context内的key"></ec:options>
5) 为之前增加的ec:table的pageSizeList属性 增加了特性
pageSizeList="
max:200,10,15,30,50,100,all" 如果 10--100以及all中,某一项大过了max的200则 不在列表中显示。
也可以只使用pageSizeList="max:200" 此时将 使用默认设置,并进行max控制。
6)
解决了pdf中文编码问题,终于支持pdf导出了。
7) 恢复了对sitemesh的支持,用法见原版ec文档(我没有亲自没有测试,因为我不会用sitemesh :( )。
8) Ajax翻页优化,同时增加了 ECSide.findAjaxZoneAtClien 属性,可设置
客户端 还是 服务端进行 html代码剪裁。
默认推荐使用 服务器端。
9) 再次对js和java代码进行了较大规模的重构,清理了一些无用代码,添加了必要的协议信息。
10) 一些细节的修改(例如对滚轮的支持更自然,filterable="true"手动调节列宽功能屏蔽等)
还有对一些小bug的修正,但是由于变化较大,肯定还会带来一些新bug。
11) 整个示例的应用逐步发展为 ecside 的最佳实践,加入了hsqldb(hsqldb的使用参考了springside),全新的例子。
当然还不够好 会在以后的日子里继续完善。
12) 做了一个简单的logo :)。
顺便问一下:
我使用了 springside 的 HsqlListener (做了些修改 但绝对不涉及到核心),为什么在每次重启应用的时候总是包下面的异常呢??
Exception in thread "HSQLDB Timer @15d63da" java.lang.NullPointerException
?at org.hsqldb.lib.HsqlTimer.nextTask(Unknown Source)
?at org.hsqldb.lib.HsqlTimer$TaskRunner.run(Unknown Source)
?at java.lang.Thread.run(Unknown Source)
===============================
2007-01-16 14点
===============================
1) 当使用“列表内部滚动条”时,可以使用百分比来设置列表的宽度了。
(但还是建议您使用像素(px)作为列表和列的宽度单位,因为百分还有一些小bug)
还有个建议 不管是使用什么样的宽度,建议都要使用一个“自动宽度”的column,
就是说不要给所有的ec:column都指定width,给其中一个点“自由”,这样很多已知的关于列宽调整的问题都可以解决。
2) 对eccn.js进行了大量的修改,提供了更好(但不完美)的IE和FF兼容(一致)性(这个工作差点把我累吐血).
ff和ie 在取得对象坐标和宽度的算法不同 太郁闷了
3) 修正了一些bug。
===============================
2007-01-12 以及之前的一些更新日志
===============================
1) 为“列表内部滚动条”增加了对鼠标滚轮的支持(只在ie6和ff2下测试过,其他版本没有测试)
2) 将部分“列表内部滚动条”相关的代码从java中提出,改用js实现.
3) 对js文件做了一些调整。
4) 修正了一些小bug。
===============================
1) 修正了一个“列表内部滚动条”的bug
该bug表现为在 IE里 有些windows的主题下,纵向滚动条不可用。FT!!!!!
2) eccn.js做了一点小小的改动,为将来做过编码支持打下了一点点基础.
===============================
1) 修正了改变页面大小时“列表内部滚动条”错乱的bug
2) 重构了“列表内部滚动条”相关的js和java代码
===============================
1) 修正了使用ajax翻页时“列表内部滚动条”错乱的bug
2) 增加了当列表内容的实际宽度和高度小于设置的宽度和高度的时候,
?? 自动调整区域大小,同时自动隐藏滚动条(只隐藏横向的)的功能。
===============================
增加了“固定列表头,滚动列表体”(“列表内部滚动条”)的功能
这个功能实现起来比我一开始想像的复杂
不是简单的使用一个 div overflow:scroll就可以搞定的
虽然功能是支持了 但是代码肯定还有很多bug或者是可以改进的地方
欢迎大家积极的提出宝贵的意见 谢谢了
使用方法:
ec:table标签内 增加
listHeight="数字" 属性 (指定列表体的高度)
同时把要指定 width="数字" 不能省略 同时要使用绝对大小 而不要使用百分比
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
部分增强功能简介:
(详见help.txt)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
我们有自己的圈子了
以后大家有 ecside相关的问题 可以去圈子里
我的 blog里问( http://fins.iteye.com/blog/48723 )?
别在发消息了 因为发消息别人看不到 而有些问题可能别人也遇到过 或者是我回答的不对 别人也可以帮忙
对吧?
谢谢大家
ecside发布地址:
http://fins.iteye.com/blog/40190
ecside圈子:
http://ecside.iteye.com/
ecside综合讨论专用帖
http://fins.iteye.com/blog/48723?
?
我申请了javascud项目 而且也申请了svn 但是不会用啊? :'( 谁来教教我啊
?
?依赖包已经上传到 圈子的共享空间里了
共3个 请解压缩后放到 WEB-INF/lib下 如果不导出pdf可以不下载pdf相关的包 和 字体文件 这两个比较大??
<%@ include file = "/common/common.jsp" %>
<link rel="stylesheet" href="/css/content.css" type="text/css">
<link rel="stylesheet" type="text/css" href="/common/css/td_style_ec.css" />
<%@ page import="java.lang.Object,java.util.*,javax.naming.*,javax.rmi.*,
erp.common.*,erp.login.*,xtgl.*,wdgl.*,wdgl.js.*,Common.*,lcgl.*,bmgl.*,
java.sql.Timestamp,java.text.SimpleDateFormat,java.math.BigDecimal;"
%>
<%
XtglSession xtglSession = (XtglSession)session.getAttribute("xtglSession");
UserObject userObject = (UserObject)session.getAttribute("userObject");
String lsSql = "";
String lsCaption = "逾期核销单信息";
SimpleDateFormat ldtFormat = new SimpleDateFormat("yyyy-MM-dd");
Collection colSjfw = null;
String lsAllZgbh="0";
%>
<html>
<head>
<title><%out.print(lsCaption);%></title>
<link rel="stylesheet" href="/css/content.css" type="text/css">
<script language="javascript" src="/js/form.js"></script>
<script language="JavaScript" src="/js/window.js"></script>
<script language="javascript" src="/js/calendar1.js"></script>
<script language="javascript" src="/js/xmlhttp.js"></script>
<script type="text/javascript" src="/common/js/prototypeajax.js" ></script>
<script type="text/javascript" src="/common/js/eccn.js" ></script>
<script language="JavaScript">
function getTjsj(){
var tmpFrm = document.forms[0];
var tmpUrl = "/cx/cy/getYqhxd.jsp?";
tmpUrl += "sj="+tmpFrm.sj.value
tmpUrl += "&qdrbh="+tmpFrm.qdrbh.value;
var res = getDataByXMLHttp(tmpUrl);
document.getElementById("list").innerHTML=res;
init();
}
var eccn=new ECCN("hxdxx1");
function init(){
eccn.init();
EccnUtil.resizeInit();
}
</script>
</head>
<body bgcolor="#ffffff" onload="getTjsj();setScroll()" onunload="getScroll()">
<table width="100%" border="0">
<tr>
<td align="absmiddle"><%out.print(lsCaption);%></td>
</tr>
</table>
<form name="tjForm">
<table border="0" cellspacing="0" cellpadding="1">
<tr>
<td >查询:</td>
<td valign="middle">
<select name="bmbh" onchange="getBmZgxx();getTjsj();"><%
out.println(lsOption_BM);
%></select>
</td>
<td valign="middle" id="qdr">
<select name="qdrbh" onchange="getTjsj();">
<%out.print(lsOption_ZG);%>
</select>
</td>
<td >截止时间:</td>
<td >
<input type="text" name="sj" value="<%=lsSj%>" readonly onFocus="javascript:fPopCalendar(sj,sj);return false;">
<a href="#" onclick="fPopCalendar(sj,sj);return false"><img src="/image/clock.gif" border="0" align="absmiddle"></a>
</td>
<td >
<%
if(lbCwgl||lbTjdy){
//out.print(new GenIconButton("打印","func_print.gif","javascript:printTjsj();").getButton());
}
out.print(new GenIconButton("刷新","func_circle.gif","javascript:getTjsj();").getButton());
%>
</td>
</tr>
</table>
</form>
<hr>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td id="list" %>
<%@ include file = "/common/common.jsp" %>
<link rel="stylesheet" href="/css/content.css" type="text/css">
<link rel="stylesheet" type="text/css" href="/common/css/td_style_ec.css" />
<%@ taglib uri="/WEB-INF/extremecomponents.tld" prefix="ec" %>
<%//@ include file = "/common/showparameter.jsp" %>
<%@ page import="java.lang.Object,java.util.*,javax.naming.*,javax.rmi.*,java.text.SimpleDateFormat,
erp.common.*,erp.login.*,xtgl.*,wdgl.*,wdgl.js.*,wdgl.cw.*,Common.*,java.math.BigDecimal,java.sql.*;"
%>
<%
request.setCharacterEncoding("GB2312");
//取参数
String lsQdrbh = request.getParameter("qdrbh");
String lsSj = request.getParameter("sj");
XtglSession xtglSession = (XtglSession)session.getAttribute("xtglSession");
WdglSession wdglSession = (WdglSession)session.getAttribute("wdglSession");
UserObject userObject = (UserObject)session.getAttribute("userObject");
Map loMap = null;
List loList = null;
String lsSql = "";
try{
Common com1 = new Common();
lsSql = "Select a.*, b.zgmc AS zgmc,'' As yqyy,'' As yjfhrq From cw_hxdxx a LEFT OUTER JOIN xt_zgxx b ON a.lyzg = b.zgbh Where (a.tssb = 0) AND (a.hxdfhrq IS NULL) AND (a.ysbz = 0) AND (a.lyrq < '" + lsSj + "') And (a.qdrbh In (" + lsQdrbh + "))";
loList = wdglSession.querySQL(lsSql);
}catch(Exception ex){
ex.printStackTrace();
}
request.setAttribute("totalRows",new Integer(loList.size()));
request.setAttribute("hxdxx",loList);
%>
<ec:table tableId="hxdxx1" items="hxdxx" var="cur" action="/cx/cy/getYqhxd.jsp"
showPrint="true" showExports="true" sortable="true" style="table-layout:fixed;"
toolbarLocation="top" rowsDisplayed="-1" xlsFileName="逾期核销单信息.xls"
toolbarContent="export|extend|status" showTitle="true"
>
<ec:row>
<ec:column property="xh" title="序号" width="4%" style="text-align:center;" value="${TOTALROWCOUNT}"/>
<ec:column property="hxdh" title="核销单号" width="11%" style="text-align:center;"/>
<ec:column property="ybh" title="运编号" width="11%" style="text-align:center;"/>
<ec:column property="bgbb" title="币别" width="4%" style="text-align:center;"/>
<ec:column property="bgje" title="报关金额" width="10%" style="text-align:right;" cell="currency" format="###0.00"/>
<ec:column property="zgmc" title="领用人" width="9%" style="text-align:center;"/>
<ec:column property="lyrq" title="领用日期" width="10%" style="text-align:center;" cell="date" format="yyyy-MM-dd"/>
<ec:column property="yjfhrq" title="预计返回日期" width="10%" style="text-align:center;"/>
<ec:column property="yqyy" title="逾期原因" style="text-align:center;"/>
</ec:row>
</ec:table> 271 楼 zack 2007-01-24 第一个页面是取过滤和显示的参数,第二个页面是取生成的显示数据用的 272 楼 fins 2007-01-24 我是希望你以附件形式发 :'(
你这么发看着迷糊 而且 我不希望这个帖子成为聊天工具
希望你可以去圈子里发言 或者去我的blog里的 ecside综合讨论 帖 去回复
谢谢了
273 楼 fins 2007-01-24 我知道原因了
你用错了
org.extremecomponents.table.filter.ExportFilter
要用 org.ecside.filter.ECSideFilter 这个过滤器
而且从你的代码上看
你的系统中应该还有 原版的ec的jar
请不要将原版和ecside一起使用 274 楼 zack 2007-01-24 哈哈,谢谢麻麻烦你了 275 楼 xfli333 2007-01-24 不给依赖包,连项目都搭建不起,咋个测试和使用哦? 276 楼 xfli333 2007-01-24 把依赖jar包放在lib下了,启动后报listener错误,项目部署失败 277 楼 ITeye管理员 2007-01-24 和EC SIDE相关提问
请到圈子和fins的博客,谢谢
http://ecside.iteye.com/