ECSide二次笔摘.docx
《ECSide二次笔摘.docx》由会员分享,可在线阅读,更多相关《ECSide二次笔摘.docx(17页珍藏版)》请在冰豆网上搜索。
ECSide二次笔摘
ecside二次笔摘
Postedon2008-12-1611:
21巴西木阅读(1725)评论
(1) 编辑 收藏引用所属分类:
Java
这几天偶尔会碰到ecside的问题,零零碎碎碰下来也对他有了一点了解,有些问题从网上搜到了答案,有些问题绕开了解决。
不过,总的来说,ec还是一个不错的作品,虽然原作者已经改为开发一个新的替代产品。
下面是从网上转载的资料,可以用来参考:
1.使用方法:
ec:
table标签内增加
listHeight="数字"属性(指定列表体的高度)
同时把要指定width="数字"不能省略同时要使用绝对大小而不要使用百分比
请教楼主,下了你的代码试了一下,如果把默认DEFAULT_PAGE_SIZE改为别的数字,比如每页显示5条,分页错误,点击下一页,显示还是10条,
你的jsp页面里的ec:
table的rowsDisplayed属性也要修改改为5
bjwulin写道
fins写道
没太看明白 :
(
reload第一个表格 你是在怎么reload的?
?
我描述不清楚,这样说吧,如果表格有21条数据,每页10条,现在在第三页,如果我在数据库里面手工删除1条数据,然后调用EcUtil.reload(...)的话,怎么让它显示第二页的数据。
因为我在后台得到的还是pageNo=3
我不明白的就是
为什么"后台得到的还是pageNo=3"?
?
你后台是怎么计算页数的?
我怀疑可能是你没有调用EccnUtil.refresh(...)
如果数据数目发生变化了
建议先
EccnUtil.refresh(...)
再
EccnUtil.reload(...)
1) 实现了灵活的可定制的“可编辑列表”功能(详见help.txt200行左右的描述以及示例)
支持多种编辑方式(文本框下拉框将来还会支持更多),可自定义模版(使用自定义的文本框下拉框),还提供了:
对可编辑列进行标识,对编辑过的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)还有一些细节的修改(例如对滚轮的支持更自然)和对一些小bug的修正,但是由于变化较大,肯定还会带来一些新bug。
11)整个示例的应用逐步发展为ecside的最佳实践,加入了hsqldb(hsqldb的使用参考了springside),全新的例子。
当然还不够好会在以后的日子里继续完善。
12)做了一个简单的logo。
使用方法:
ec:
table标签内增加
listHeight="数字"属性(指定列表体的高度)
同时把要指定width="数字"不能省略同时要使用绝对大小而不要使用百分比
smalldeer写道
一直关注ecside,谢谢你们的无私奉献,真的增强好多。
有一个问题请教,我在一个页面中,要使用2个表格,
如果不写request.setAttribute("totalRows",newInteger(rowc));
就会报YouneedtospecifythetotalRows(asanInteger)tousetheorg.extremecomponents.table.callback.LimitCallback.
如果写,但是有2个table,参数只有一个totalRows,我如何为2个表格分别指定它的totalRows呢
请教一下,十分感谢。
说来惭愧啊
我虽然一直在研究ec的代码并做出改造
但是有几个地方我一直没有深入的涉及
其中就包括同一叶面显示多表格的设计
因为我一直认为这不是一个好的实现方式
其实代码是这样的
他先去找tableId+"_totalRows"
找不到了才去找totalRows
我的那个例子对你有误导我的错
ecside介绍:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ecside是一个开源的列表组件。
他源自著名开源列表组件eXtremeComponents(http:
//www.extremecomponents.org),
但现在已经脱离eXtremeComponents,独立发展(仍有大量代码来自eXtremeComponents)。
由于各种协议和各种授权的问题,目前还不能独立成为一个开源项目,但“做最实用易用的列表组件”是ecside最终的目标。
作者:
fins(name:
WeiZijun email:
fins@ blog:
)
(详见readme.txt)
基础功能的使用请参考eXtremeComponents官方网站(http:
//www.extremecomponents.org)的wiki(有中文版)
增强的功能简介:
1 ec:
table属性增加 toolbarLocation
用来控制工具条在上还是在下显示
可选值"bottom""top""none"(不显示)
2 ec:
table属性增加 toolbarContent
可自定义工具条显示那些内容,以及排列顺序
默认:
toolbarContent="navigation|pagejump|pagesize|export|extend|status"
例子 toolbarContent="pagejump|navigation|export|extend|status"
此时工具条将不显示"页面行数调整"框同时顺序也会和默认的发生变化
navigation导航条
pagejump页面跳转
pagesize页面行数设置
export导出按钮区
extend自定义扩展区
status数据信息区
同时为ec:
table增加属性nearPageNum="数字",
用来设置导航条前后显示的邻近页数,不设置将使用默认值,设置为0则不显示邻近页
3 ec:
table属性增加 pageSizeList
可用来设置“页面行数选择列表”中的具体数值
默认:
pageSizeList="10,20,50,100,1000,2000,all"
其中的all为增加全部显示功能。
例子 pageSizeList="10,20,50"
此时列表里将只显示102050供选择
max:
数字特性:
pageSizeList="max:
200,10,15,30,50,100,all"
如果10--100以及all中,某一项大过了max的200则不在列表中显示。
也可以只使用pageSizeList="max:
200"此时将使用默认设置,并用max限制。
4ec:
table属性增加xlsFileName 和pdfFileName
用来快捷的实现导出xls文件
如果你只是想使用默认的方式导出xls和pdf文件不用再使用ec:
exportXls ec:
exportPdf标签了
直接在ec:
table里使用这个属性就ok.
使用方法xlsFileName="文件名.xls"
5 ec:
table属性增加 showPrint
显示打印按钮,该功能只能在ie5.5以上浏览器中使用没有使用第三方组件使用了ie内置组件
使用方法:
showPrint="true"
打印按钮将作为导出的一种类型而存在
6ec:
table属性增加 resizeColWidth和minColWidth
默认:
resizeColWidth="false" minColWidth="20"
用来实现手动调节列宽的功能在ie5.5+和ff2.0下测试通过
resizeColWidth="true"实现列宽调整
minColWidth="20"调整时列的最小宽度
目前不能和过滤功能一同使用(当filterable="true"时候不可以用)
7为ec:
row添加更多的html事件支持,现支持:
onmouseroveronmouseroutonclickondbclick
8为ec:
column添加更多的html事件支持,现支持:
onmouseroveronmouseroutonclickondbclick
9为ec:
tableec:
rowec:
column增加了tagAttributes属性
该属性用来为元素增加一些自定义的html属性
例如 ec:
column现在并不支持 onmouseup事件
可以通过下面的方式实现
columntagAttributes="onmouseup=\"alert('testmouseup');\"".......
10ec:
column属性增加ellipsis
实现单元格内数据过长的时候自动截短并加"..."的功能ieonly
因为ff不支持text-overflow:
ellipsis;
使用ellipsis="true"
使用时还要为ec:
table加上style="table-layout:
fixed;"(如果您已经使用了调整列宽功能则不用添加)
11ec:
column属性增加 headerSpan
实现表头的跨列显示
使用
column headerSpan="2"...
column headerSpan="0"...
注意当把一个column的headerSpan=设置为n的时候
那么他下面的n-1个column的headerSpan一定要为0(这个以后会想办法修正现在这么处理太麻烦了)
12ec:
column属性增加 calcSpan
实现统计行的标题跨列显示
使用
column calc="total"calcTitle="合计"calcSpan="2"....
13增加ec:
extendrow标签
在列表前/后加一行或多行取决于你的html代码怎么写因为这个是绝对自由的连tr标签都要自己写
before="true" (truetopfalse(默认))
当before="top"的时候所加行会出现在列表表头的上面
这样你可以做多行表头了 (但这时候不支持列宽调整想支持需要自己做些动作详见示例文件demo2.jsp)
例如
extendrowbefore="true">
#ffeedd">*列表前扩展行
#ffeedd">可以在这里加一些自定内容
#ffeedd"colspan="2">该行与ectable在同一table内
|
extendrow>
extendrow>
#eeddff">
#eeddff">*列表后扩展行
#eeddff">可以在这里加一些自定内容
#eeddff">该行与ectable在同一table内
|
extendrow>
14增加ec:
extend标签
用来在toolbar内增加一些自定义的html代码属性
例如extend>自定义扩展内容
extend>
这时该连接将会出现在toolbarContent中的extend所在位置
15增加ec:
extendbar标签
在列表前/后加些html代码 属性 before="true" (truetopfalse(默认))
如果要加的东西比较多 建议使用这个而不要使用ec:
extend
ec:
extendbar添加的内容不会和组件自带的tool放到一行
当before="top"的时候所加内容会出现在列表和列表标题之间
例如
extendbarbefore="true">
#999999">*工具条前扩展块:
可以在工具条前加些你自己想加的东西,所加内容和ectable在同一form内
extendbar>
extendbar>
#999999">*工具条后扩展块:
可以在工具条后加些你自己想加的东西,所加内容和ectable在同一form内
extendbar>
16增加了cell类型
复选框cell="checkbox" headerCell="checkbox"
单选框cell="radiobox" headerCell="riadiobox"
例如
columncell="checkbox" headerCell="checkbox"
alias="chkBoxNameXXX"value="chkValue${pre.nickname}"
width="22"viewsAllowed="html"/>
注意value对应生成的checkBox的value,alias对应生成的checkBox的name
17增加页面变量${TOTALROWCOUNT}用来标示当前纪录在全部记录中的行数
(${ROWCOUNT}用来标示当前纪录在当前页中的行数)
例子
columnproperty="name"title="姓名"width="160">${TOTALROWCOUNT},${pre.name}
column>
18增加了“固定列表头,滚动列表体”(“列表内部滚动条”)的功能
这个功能实现起来比我一开始想像的复杂
不是简单的使用一个divoverflow:
scroll就可以搞定的
虽然功能是支持了但是代码肯定还有很多bug或者是可以改进的地方
欢迎大家积极的提出宝贵的意见谢谢了
使用方法:
ec:
table标签内增加
listHeight="数字"属性(指定列表体的高度)
同时把要指定width="数字"不能省略同时要使用绝对大小而不要使用百分比
详见例子:
demo0.jsp
19增加shadowRow功能
shadowRow我自己瞎起的名字解释如下:
每行下面可以再加一个子行这个行里显示什么可以由大家自己定义
常见的应用是在有些论坛论坛主题列表里当你点击行开头的小加号的时候会在这行下面展开一个区域那里面显示的是主帖的内容.
我们可以把这个扩展一下利用ajax从后台去读取我们想读取的信息,这样我们就可以做任何我们想做的事情了)
该功能是不通过标签或java代码实现纯js实现。
详见例子demo0.jsp(大家一定要注意看demo0.jsp里的注释啊呵呵)
其实有了这个功能,大家已经可以自己比较容易的实现可编辑表格的功能了呵呵过一阵我会发一个例子上来
20ec:
table增加了excludeParameters和includeParameters属性
使用后,ecside将自动排除或保留属性中所指定的“表单属性”
这个如果你理解了autoIncludeParameters的用处就不难理解这两个属性的用处了
注意:
excludeParameters比includeParameters有更高的优先级
即excludeParameters="a" includeParameters="a"时a仍然将被排除
建议尽量使用excludeParameters不要使用includeParameters,除非你非常明确自己要包含的东西。
includeParameters使用不当会使你忘记包含一些必须包含的东西.
excludeParameters="表单属性名称1,表单属性名称2" (表单属性名称不能含有半角的逗号)
includeParameters="表单属性名称3,表单属性名称4"
21实现了灵活的可定制的“可编辑列表”:
在ec:
column中指定下列属性:
cellName="这个cell在数据库中真正对应的列名,省略时则自动使用property对应的名称"
cellValue="这个cell在数据库中真正对应的值"
cellEdit="a1,a2,a3"
a1编辑类型(目前可选inputselect其他如radio等还不完善),
a2对应的模版textarea的ID(默认是"ec_edit_template_'+编辑类型),
a3触发编辑的事件(默认是ondblclick)
模版为一段写在textarea内的表单域的html代码,书写是完全自由的但是一定要注意不要缺少必要的事件方法和属性。
22增加了高亮显示选种行的功能,使用ec:
table属性:
selectlightRow="true"
23为ec:
table增加了maxRowsExported="数字"属性,用来限制导出大最大条数,
如果数据超过这个数目,则不执行导出操作。
24实现了cell的映射功能(详见示例的性别和角色列)
用法:
columnmappingItem="用来映射的MAP在context内的key"mappingDefaultValue="当找不到映射值时要使用的默认值".../>
例如,在示例中,角色的信息以“标识--名称”的形式放到了一个map内
在action中把这个map放到了request.setAttribute("USERROLE_MAP",CommonDictionary.USERROLE);内
在页面使用
columnproperty="USERROLE"title="角色"mappingItem="USERROLE_MAP"mappingDefaultValue="[错误的角色]"/>
就会自动将名称显示出来。
25做了一个简单的小标签用来从map生成select的option列表
optionsitems="MAP在context内的key"defaultKey="默认选中的option的value"tagAttributes="附加的html属性"/>
还有很多细节的改动,暂略...
内部变化:
1提炼了ectable生成的js
ectable原先的实现会在页面内生成大量的js代码非常不好
现在翻页相关的js代码全部提炼成了js函数
2翻页按钮的外观提炼成由css决定而不是图片决定。
ectable原版生成的是
现在生成的是
这样要改变外观只要去修改“样式”中的背景图片就ok了
filterclear按钮暂时还没有这么处理
3!
!
!
翻页机制全部使用ajax实现!
!
!
(没有使用任何的ajax后台框架(如dwrajaxAnywhere),纯js端实现)
filter排序功能还没有使用ajax
4支持预查询功能(利用ajax实现)
例如在用户察看第5页数据的时候,系统会偷偷的把上一页和下一页的数据也查出来
并放到隐藏的textarea内,翻页的时候无需再查询
当然这个功能有利弊,所以是可设置是否开启
5将导出excel所使用的组件由poi切换成了jxl
原因有2
1jxl这个项目没有死仍然在继续发展
2jxl似乎对内存要求更小
(poi在导出20000条纪录的时候outofmemery了,jxl则顺利完成任务)
jxl官方网址
6xls导出方式修改如果了解代码的人一定知道默认的导出xls时是导出的vo/map里的原始数值
而不是页面实际显示的内容,这个问题现在解决了。
7代码进行了较大规模的重构分离出了tool模块(但这个模块还不够灵活下一版本打算在这个基础上争强扩展性灵活性)