2007-05-14
AJAX表格分页模板:探讨基于Prototype框架的javascript面向对象设计(上)
关键字: ajax 分页 javascript面向对象 css表格 groovy
数据分页显示,是很普遍的需求,传统的实现大多是基于服务器端导航的,这种设计采用同步方式进行数据传输,用户体验很差。下面是我在学习ajax的过程中,实现的一个解决方案,不知道设计得怎么样,所以想发出来给大家参考下,恳请给予建议和指导,狗狗感激不尽!
需求概述:需要将二维数据通过表格展现给客户端,用户可以事先选择每页显示的条目数,以及数据获取方式(静态获取、异步缓存,以及异步非缓存)。三种方式简述如下——
1、静态获取方式:
一次性获取全部数据,切换页面显示时,不再发起新的异步查询,适合少量数据的分页显示。
2、异步缓存方式:
分次异步获取页面内容,并缓存访问过的页面内容,下一次访问相同页面时,直接显示缓存内容,适合量较大且内容更 新频率慢的数据显示。
3、异步非缓存方式:
与第二种方式类似,只是并不缓存页面内容,每次切换新页面都发起一次异步请求,适合更新频率快的数据显示。
使用技术:
客户端——
1、使用table定义二维数据结构,这是table最合理的使用方式;
2、使用css控制页面展现;
3、使用javascript发起异步查询,以及操作页面dom元素。为加快开发速度,采用成熟的Prototype框架简化复杂度。
服务器端——
1、因为只是原型设计,决定采用Groovy脚本生成响应数据快速展示。只要遵循数据传输格式,能很快替换为别的实现。
2、采用MySql做数据存储,模仿分页数据。
实现过程:
首先,设计静态效果页面,注意按照web标准采用合适的xhtml结构,并使用css控制其表现,页面代码如下,为简单起见,这里把css代码直接写到head头中:
这样我们就制作了一个包含四行数据的表格。注意这里html标签的运用,使用thead、tbody将表格内容分成逻辑块,在后面的设计中,我们会把每一页的内容生成一个tbody。为保证兼容性,对表格的修饰,比如边框、背景、底色这些,最好在单元格(td或者th)中设定,以确保在不同的浏览器中具有相似的显示效果。
接下来的内容,请参看:
AJAX表格分页模板:探讨基于Prototype框架的javascript面向对象设计(中)
需求概述:需要将二维数据通过表格展现给客户端,用户可以事先选择每页显示的条目数,以及数据获取方式(静态获取、异步缓存,以及异步非缓存)。三种方式简述如下——
1、静态获取方式:
一次性获取全部数据,切换页面显示时,不再发起新的异步查询,适合少量数据的分页显示。
2、异步缓存方式:
分次异步获取页面内容,并缓存访问过的页面内容,下一次访问相同页面时,直接显示缓存内容,适合量较大且内容更 新频率慢的数据显示。
3、异步非缓存方式:
与第二种方式类似,只是并不缓存页面内容,每次切换新页面都发起一次异步请求,适合更新频率快的数据显示。
使用技术:
客户端——
1、使用table定义二维数据结构,这是table最合理的使用方式;
2、使用css控制页面展现;
3、使用javascript发起异步查询,以及操作页面dom元素。为加快开发速度,采用成熟的Prototype框架简化复杂度。
服务器端——
1、因为只是原型设计,决定采用Groovy脚本生成响应数据快速展示。只要遵循数据传输格式,能很快替换为别的实现。
2、采用MySql做数据存储,模仿分页数据。
实现过程:
首先,设计静态效果页面,注意按照web标准采用合适的xhtml结构,并使用css控制其表现,页面代码如下,为简单起见,这里把css代码直接写到head头中:
xml 代码
- <html>
- <head>
- <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
- <title>分页模板</title>
- <style type="text/css">
- * {
- margin: 0;
- padding: 0;
- font: 12px 宋体;
- }
- body {
- text-align: center;
- }
- #option {
- margin: 20px auto;
- }
- #items{
- width: 4em;
- }
- #TMPwrap {
- text-align: center;
- margin-top: 10px;
- }
- #pages {
- margin: 10px auto;
- border-collapse: collapse;
- border: 1px #666 solid;
- }
- #pages caption {
- width: 100%;
- }
- #pages th {
- padding: 0.5em;
- border-right: 1px #B9B4A1 solid;
- background: #ECE9D8 url("images/theadbg.gif") repeat-x bottom;
- text-align: center;
- }
- #pages td {
- border: 1px #B9B4A1 solid;
- border-top: none;
- padding: 0.5em;
- }
- #navigation {
- margin: 10px;
- text-align: center;
- }
- #navigation a {
- margin-right: 8px;
- color: black;
- }
- #navigation a.active {
- text-decoration: none;
- color: red;
- cursor: default;
- }
- .hidden {
- display: none;
- }
- </style>
- </head>
- <body>
- <div id="option">
- <label for="items">每页显示条数:</label>
- <input id="items" type="text" value="4" />
- <label for="type">获取方式:</label>
- <select id="type">
- <option value="Static">静态</option>
- <option value="AsyncCache">异步缓存</option>
- <option value="Async">异步非缓存</option>
- </select>
- <input id="display" type="button" value="显 示" />
- </div>
- <div id="TMPwrap">
- <table id="pages">
- <caption>静态分页模板</caption>
- <thead>
- <tr>
- <th>标题一</th>
- <th>标题二</th>
- <th>标题三</th>
- <th>标题四</th>
- <th>标题五</th>
- <th>标题六</th>
- </tr>
- </thead>
- <tbody class="">
- <tr>
- <td>1</td>
- <td>1</td>
- <td>1</td>
- <td>1</td>
- <td>1</td>
- <td>1</td>
- </tr>
- <tr>
- <td>2</td>
- <td>2</td>
- <td>2</td>
- <td>2</td>
- <td>2</td>
- <td>2</td>
- </tr>
- <tr>
- <td>3</td>
- <td>3</td>
- <td>3</td>
- <td>3</td>
- <td>3</td>
- <td>3</td>
- </tr>
- <tr>
- <td>4</td>
- <td>4</td>
- <td>4</td>
- <td>4</td>
- <td>4</td>
- <td>4</td>
- </tr>
- </tbody>
- </table>
- <div id="navigation">
- <a href="#" class="active">1</a>
- <a href="#">2</a>
- <a href="#" class="">3</a>
- </div>
- </div>
- </body>
- </html>
这样我们就制作了一个包含四行数据的表格。注意这里html标签的运用,使用thead、tbody将表格内容分成逻辑块,在后面的设计中,我们会把每一页的内容生成一个tbody。为保证兼容性,对表格的修饰,比如边框、背景、底色这些,最好在单元格(td或者th)中设定,以确保在不同的浏览器中具有相似的显示效果。
接下来的内容,请参看:
AJAX表格分页模板:探讨基于Prototype框架的javascript面向对象设计(中)
- 19:16
- 浏览 (6132)
- 评论 (0)
- 分类: Ajax 新时代
- 进入论坛
- 发布在 Groovy on Grails 圈子
- 相关推荐
- 浏览: 52543 次
- 性别:

- 来自: 昆明

- 详细资料
搜索本博客
我的相册
Everyday Scripting with Ruby 中文版
共 1 张
共 1 张
最近加入圈子
链接
- 默海飞瀑
- 怿飞's Blog
- Realazy's blog
- old9's blog
- dUcky's blog
- nirvanastudio
- csser
- 52css
- 代码课
- 经典论坛
- dlee's blog
- simohayha's blog
- inspring.cn
- 蛟龍居
- tony writely
- LetRails
- elviscai
- K-Rule
- Idea Grapes
- 为之漫笔
- CSS森林
- linxz's blog
- LukeW Interface Designs
- Edwards
- with Imagination
- quirksmode
- m3nt0r
- mislav
- scripteka
- Thomas Fuchs
- adam
- pythontik
- perfection kills
- 凤凰涅磐
- 臭鱼的交互设计
- Protosafe
- Yahoo开发者网络
- Ernest
最新评论
-
Jruby:Java牵手动态语言 ...
呵呵,骆老师人也非常友好:)赞一个
-- by xxj -
最值得期待的好书:《Pro ...
Design Patterns让人以为跟Design Patterns有什么联系
-- by csf177 -
最值得期待的好书:《Pro ...
恩,这本书是好书,就是翻译的有些赶,非常适合做参考手册
-- by x5studio -
发布一个基于Prototype和 ...
呵,今天才想起来下来看...挺不错的.
-- by zhouzhao21 -
发布一个基于Prototype和 ...
很不错,不过感觉大了一点。
-- by yecp






评论排行榜