`

[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>

xml 代码
  1. <ec:column mappingItem="用来映射的MAP在context内的key" mappingDefaultValue="当找不到映射值时要使用的默认值".../>  

例如,在示例中,角色的信息以 “标识--名称”的形式放到了一个 map内
在action中 把这个map放到了 request.setAttribute("USERROLE_MAP", CommonDictionary.USERROLE);内
在页面使用

xml 代码
  1. <ec:column property="USERROLE" title="角色" mappingItem="USERROLE_MAP" mappingDefaultValue="[错误的角色]"/>  


就会自动将名称显示出来。
2) 做

xml 代码
  1. <ec:options items="MAP在context内的key" defaultKey="默认选中的option的value" tagAttributes="附加的html属性"/>  


3) 对ec:extend标签做了扩充,增加了位置设置属性 location
top: form内列表主体前  ; bottom : form内列表主体后 
toolbar或不设置location属性  在toolbar的扩展位置.
4) 代码进行了一点点修改,对使用没有影响。

===============================
2007-01-20 9点   ECSIDE 1.0 RC1 发布啦
===============================
沉寂两天,但一直没有闲着,带来了大变化 索性来个 1.0 RC1 版 :) 。
1) 实现了灵活的可定制的“可编辑列表”功能 (详见help.txt 200行左右的描述 以及示例)
支持多种编辑方式(文本框 下拉框 将来还会支持更多),可自定义模版(使用自定义的文本框 下拉框),还提供了:
对可编辑列进行标识,对编辑过的cell进行标识(默认为改变单元格背景色),
使用ajax技术提交后台,提交成功的cell将清除编辑标识 等贴心设计。
2) 增加了 高亮显示选中行的功能,使用 ec:table属性: selectlightRow="true"
3) 去掉了 fullnavigation导航条,将其与navigation导航条合并
改为为ec:table增加属性 nearPageNum="数字" 用来设置导航条前后显示的邻近页数 等于0时 为不使用邻近页。
4) 为ec:table增加了 maxRowsExported="数字" 属性,用来限制导出大最大条数, 如果数据超过这个数目,则不执行导出操作。
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相关的包 和 字体文件 这两个比较大  

  • ecside_1.0_rc1_20070121b.zip (697.6 KB)
  • 描述: 完整版,但不包括所依赖的WEB-INF/lib下的文件.依赖文件可以去圈子里下载, 也可以去javaeye ftp下载,也可以按照WEB-INF/lib下的filelist.txt文件所列,自行下载.
  • 下载次数: 3289
分享到:
评论
279 楼 差沙 2013-01-15  
hymn_com 写道
我后来又在ecside的基础上进行的修改,基本解决不两只浏览器列对不齐的问题;jetty使用问题等

多老的帖子都被你挖出来了。
278 楼 hymn_com 2013-01-06  
我后来又在ecside的基础上进行的修改,基本解决不两只浏览器列对不齐的问题;jetty使用问题等
277 楼 ITeye管理员 2007-01-24  
和EC SIDE相关提问

请到圈子和fins的博客,谢谢

http://ecside.iteye.com/
276 楼 xfli333 2007-01-24  
把依赖jar包放在lib下了,启动后报listener错误,项目部署失败
275 楼 xfli333 2007-01-24  
不给依赖包,连项目都搭建不起,咋个测试和使用哦?
274 楼 zack 2007-01-24  
哈哈,谢谢麻麻烦你了
273 楼 fins 2007-01-24  
我知道原因了

你用错了
org.extremecomponents.table.filter.ExportFilter
要用 org.ecside.filter.ECSideFilter 这个过滤器
而且从你的代码上看
你的系统中应该还有 原版的ec的jar
请不要将原版和ecside一起使用
272 楼 fins 2007-01-24  
我是希望你以附件形式发 :'(
你这么发看着迷糊 而且 我不希望这个帖子成为聊天工具
希望你可以去圈子里发言 或者去我的blog里的 ecside综合讨论 帖 去回复

谢谢了
271 楼 zack 2007-01-24  
第一个页面是取过滤和显示的参数,第二个页面是取生成的显示数据用的
270 楼 zack 2007-01-24  
第二个显示页面
<%@ page contentType="text/html; charset=GBK" %>
<%@ 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>
269 楼 zack 2007-01-24  
第一个调用页面
<%@ page contentType="text/html; charset=GBK" %>
<%@ 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 class="guide"><img src="/image/guide.gif" align="absmiddle"><%out.print(lsCaption);%></td>
  </tr>
</table>

<form name="tjForm">
<table border="0" cellspacing="0" cellpadding="1">
  <tr>
    <td class="whitebg" >查询:</td>
    <td class="whitebg" valign="middle">
     <select name="bmbh" onchange="getBmZgxx();getTjsj();"><%
     out.println(lsOption_BM);
     %></select>
    </td>
    <td class="whitebg" valign="middle" id="qdr">
      <select name="qdrbh" onchange="getTjsj();">
<%out.print(lsOption_ZG);%>
      </select>
    </td>
    <td class="whitebg" >截止时间:</td>
    <td class="whitebg" >
       <input type="text" name="sj" class="field" 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 class="whitebg" >
    <%
      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" class="guide">
    </td>
  </tr>
</table>
</body>
</html>

268 楼 fins 2007-01-24  
能不能把你的jsp叶面发给我啊
267 楼 zack 2007-01-23  
我是在自己开发的页面上做的,一开始我没有在web.xml中加入<filter>
  <filter-name>eXtremeExport</filter-name>
  <filter-class>org.extremecomponents.table.filter.ExportFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>eXtremeExport</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>
这时打印可以使用,但是不能导出excel文件,我加入后excel可以导出,但是打印就好像不正常了
266 楼 fins 2007-01-23  
你用的是我的示例还是自己开发的叶面啊??
265 楼 zack 2007-01-23  
我这边用的是maxthon 服务器是用的weblogic
264 楼 fins 2007-01-23  
这个我这边测试了 没有这种情况啊
:'(
你是什么浏览器 什么web服务器?
263 楼 zack 2007-01-23  
为什么我不能使用打印功能,点击打印按钮后弹出一个窗口,问是要打开还是保存一个_print_文件
262 楼 fins 2007-01-23  
呵呵 会有那么一天的
但是我想那时候ecside一定已经很棒了
在那一天到来之前 ecside还有好多好多东西要做呢
随着功能的增强 我的野心也在膨胀 哈哈哈

261 楼 h819 2007-01-23  
楼主的热情太高了

真担心你哪天没兴趣了:(

260 楼 godson_2003 2007-01-23  
楼主更新的真快

热切期待

相关推荐

Global site tag (gtag.js) - Google Analytics