首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

[2007-01-21 18时公布]ecside 1.0rc1: 列表组件eXtremeComponents全面增强版

2012-10-27 
[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/

热点排行