`

ECSide FAQ 之 :展现列表(分页)、排序、过滤的问题

阅读更多
最近很多人都问我关于ecside展现列表、排序、过滤相关的问题:
例如 "如何基于数据库操作" "为什么排序不好用" "为什么排序只是当前页" "为什么过滤只是当前页" 等等.
在这里我想通过该帖一并回答.如有说的不明白或者不对的地方欢迎大家回帖讨论.

首先ecside展现列表、排序、过滤(该三种操作以下简称为 RSF )的实现原理完全和原版EC一样,
如果你对原版EC的retrieveRowsCallback、sortRowsCallback、filterRowsCallback 非常熟悉,那么可以忽略此文.

先来简单介绍一下RSF操作方式. 
ecside支持两种RSF方式:   基于java collection层 和 基于数据库层,下面分别介绍:

一:基于java collection层:
这是ec的默认实现方式, 最简单易用.

你要做的就是将整个列表所要展现的全部数据放入collection 内,并交给EC来处理.
其中RSF操作,全部由EC在内存中完成,由于你已经将全部数据放入了collection中,
所以排序 过滤都是基于全部数据的.

你要在DAO中做的就是一个 查询操作,SQL语句中不需要加入 关于排序 分页 过滤的代码.

这种方式的优点非常明显:实现简单.

缺点同样明显,而且在很大程度上是致命的: 数据量大的时候速度慢,而且很可能outofmemery.


这时候我们就需要第二种方式了:

二:基于数据库层:

在这种方式下,EC的角色发生了一点点变化.
此时,EC负责把 collection 里的内容展现出来, 同时会向你提供RSF相关的参数.
而这些参数需要你自己手动取得 并传入到DAO中(当然EC提供了很多方便的方法来帮助你取得这些参数),
具体功能的实现需要你自己在DAO中组织相应的SQL语句

这种方式的优缺点正好和方式一相反.



两种基本的实现方式介绍完了,下面讲一下实现:

大家可以看一下 ecside.properties 文件中的下列内容
table.filterRowsCallback.process=org.extremecomponents.table.callback.ProcessRowsCallback
table.filterRowsCallback.limit=org.extremecomponents.table.callback.LimitCallback

table.sortRowsCallback.process=org.extremecomponents.table.callback.ProcessRowsCallback
table.sortRowsCallback.limit=org.extremecomponents.table.callback.LimitCallback

table.retrieveRowsCallback.process=org.extremecomponents.table.callback.ProcessRowsCallback
table.retrieveRowsCallback.limit=org.extremecomponents.table.callback.LimitCallback


其中 ProcessRowsCallback 采用了方式一 ,LimitCallback采用了方式二
而table.retrieveRowsCallback.default会告诉EC你默认使用的是哪个.
同样你也可以在 ec:table 标签里 指定
<ec:table filterRowsCallback="process/limit"  sortRowsCallback="process/limit"  retrieveRowsCallback="process/limit" ... >


大家可能还看到了 org.ecside.table.callback.CommonLimitCallback 这个是我自己随意组合出来的一个rowcallback
他在执行分页的时候,使用了方式二,而排序 过滤的时候使用了方式一
所以,大家可能会发现,DEMO中的排序 过滤方法只对当前页有效.
我这么做其实是一种偷懒的方式,但多数情况下,正如网友所说"只排当页数据毫无意义",你们说的没错,的确如此:)

我会在新版本的DEMO中提供两种方式的完整的实例,还请大家耐心等待

分享到:
评论

相关推荐

    业务框架应用FAQ

    【业务框架应用FAQ详解】 业务框架是企业信息系统中用于组织和执行业务逻辑的重要组成部分,它为各类业务操作提供了一个清晰的结构。对于初学者来说,理解业务框架的应用可以帮助他们更好地掌握系统操作和流程设计...

    可展开和收缩的jquery FAQ问答列表特效

    首先,FAQ(Frequently Asked Questions,常见问题)问答列表是网站上常见的一种信息展示方式,它帮助用户快速找到他们可能遇到的问题及解决方案。通过使用jQuery实现的展开和收缩效果,可以使得FAQ列表更加交互友好...

    jquery常见问题FAQ展开收缩列表效果

    本篇文章将详细讨论在使用jQuery时,如何实现常见问题FAQ的展开收缩列表效果,这对于创建交互式的用户界面至关重要。 首先,我们需要理解基本的HTML结构。一个FAQ(常见问题解答)通常包含一个问题标题和对应的答案...

    jQuery toggle事件制作FAQ列表页.zip

    在这个“jQuery toggle事件制作FAQ列表页”项目中,我们重点探讨如何利用jQuery的toggle事件来创建一个功能丰富的常见问题解答(FAQ)页面。以下是关于这个主题的详细知识点: 1. **jQuery toggle事件**:toggle...

    rasa_ch_faq:用 rasa 实现 rasa faq 机器人

    支持的问题列表请参见:一些配置分词使用的 bert, 自定义了如何运行由于使用了 bert_chinese, 所以 需要下载 bert_chinese 模型。并放到 pre_models 文件夹中,重命名为 tf_model.h5命令执行:curl -L ...

    lwc-paginator:可组合分页LWC

    闪电Web组件传呼器如何实现可在任何项目中使用的可组合分页LWC的示例。 该存储库中包括pager及其相应的utils文件夹,以及一个示例FAQ组件,该组件使用pager器显示示例性常见问题: 有关更多信息,请参阅 的!

    FAQ:TWGC常见问题解答常见问题汇总

    常见问题(FAQ)或问答(Q&A)是列出的问题和答案,所有这些问题和答案都应该在某些情况下是常见问题,并且与特定主题相关。 该格式通常用于电子邮件邮件列表和其他在线论坛,在这些论坛中经常会出现某些常见问题。...

    华为网络协议FAQ之路由协议篇 V2.0

    【华为网络协议FAQ之路由协议篇 V2.0】是一份详尽的文档,主要针对华为设备中的路由协议进行了深入的解答与解析。在IT领域,路由协议是网络通信的核心部分,它负责在网络中确定数据包的最佳传输路径。这份文档涵盖了...

    css3列表FAQ问答特效.rar

    【CSS3列表FAQ问答特效】是一种利用CSS3技术来实现的网页交互效果,它使得FAQ(常见问题解答)部分更具视觉吸引力和用户友好性。在网页设计中,FAQ区域通常包含一系列问题和对应的答案,而CSS3的引入可以增强这种...

    MTK功能机常见问题总结FAQ

    ### MTK功能机常见问题总结FAQ及开发指南 在移动通信技术不断发展的今天,功能机仍然占据着一定的市场份额。MediaTek(简称MTK)作为移动通信领域的领军企业之一,为功能机提供了强大的技术支持。本文将根据给定的...

    图书管理ER图详解下载FAQ:

    很实用下载FAQ: Q: 为什么我点的下载下不了,但积分却被扣了 A: 由于下载人数众多,下载服务器做了并发的限制。若发现下载不了,请稍后再试,多次下载是不会重复扣分的. Q: 我的积分不多了,如何获取积分? A: 上传...

    EAS系统部署常见问题2013 FAQ

    EAS系统部署常见问题2013 FAQ EAS 系统部署常见问题 FAQ 是一份详细的技术文档,为 EAS 产品支持部刘习红所编写,旨在解决 EAS 系统部署过程中常见的问题。该文档涵盖了 EAS 系统安装、部署的各种问题的处理,适用...

    FAQ.zip_FAQ_在线FAQ制作_网站faq系统

    这些问题会被存储在数据库中,并按照特定的规则排序和展示,如按时间、热度或类别。为了提高用户体验,系统通常会包含搜索功能,让用户能快速定位到可能已有的相似问题。 三、问题解答与互动 在线FAQ系统的核心是...

    faq:知识共享常见问题页面

    常问问题知识共享常见问题页面内容更新 :warning: 不要修改index.html文件中faq/ 。 它们是由构建脚本生成的。 仅修改降价文件( faq-en.md和faq-fr.md )。部署方式在您的本地计算机上: 确保已安装pandoc (可通过...

    Laravel开发-faq-manager

    在 Laravel 框架中构建一个 FAQ(常见问题)管理系统是一项常见的任务,它可以帮助用户快速找到解决方案,提升用户体验。下面我们将深入探讨如何利用 Laravel 的特性和功能来创建这样一个系统。 1. **安装与设置** ...

    spree-faq:疯狂商务的常见问题

    狂欢常见问题解答 ...bundle && bundle exec rails g spree_faq:install 注意: FAQ链接不会添加到前端布局中,取决于您将其放置在您喜欢的布局中。 贡献 请参阅相应的。 版权所有(c)2009-2015 , 和其他,根据

    MTK平台:FAQ总结

    2. FAQ(常见问题解答)文档是针对MTK平台开发过程中可能遇到的常见问题进行解答的官方文档。 3. 文档是早期版本的FAQ,意味着这些内容可能不再完全适用于最新的平台版本,但仍可能对理解平台的某些方面有所帮助。 ...

    Python-一个自动回复FAQ问题的聊天机器人

    1. **简单词汇对比**:这是最基础的文本匹配方式,通过比较问题和FAQ中的关键词来寻找相似度。例如,如果问题和FAQ中都包含相同的专有名词或关键短语,那么就认为它们可能有较高的关联性。这种方法简单易行,但可能...

    mtk 功能机开发常见问题FAQ

    标题“mtk 功能机开发常见问题FAQ”指向了使用MTK芯片开发功能手机时,开发者可能遇到的普遍问题及其解决方案。描述中提到的“缩短开机时间,蓝牙拨号器相关问题,CAMERA常见软件问题”,则是该FAQ将重点讨论的三个...

    MTK_on_line_FAQ_SW_ALPS_20140702

    《MTK_on_line_FAQ_SW_ALPS_20140702》这份文档,主要聚焦于联发科(MediaTek)在线FAQ(常见问题解答)中的软件部分,特别是针对ALPS(Advanced Linux Platform Software)在2014年7月2日时的常见问题与解决方案。...

Global site tag (gtag.js) - Google Analytics