一、概览

Flexigrid是一个基于jQuery开发的Grid,与 Ext Gird类似。Flexigrid显示的数据能够通过Ajax获取或者从一个普通的表格转换。

它的功能包括:

s   调整列宽

s   合并列标题

s   自定义查找

s   隐藏列

s   隔行变色

s   行扩展事件

s   动态注册外部参数

s   分页

s   排序

s   显示/隐藏表格等。

二、环境准备

首先.去官网http://www.flexigrid.info/下载FlexiGrid .下载完成后,解压缩文件得到如下目录结构:

flexigrid-1.1

+css

+images

+bg.gif

+btn-sprite.gif

+…

+flexigrid.css

+flexigrid.pack.css

+js

+flexigrid.js

+flexigrid.pack.js
其中css文件夹为FlexiGrid的css样式表文件及所需的图片,js文件夹为FlexiGrid的js文件

三、实例

1.在MyEclipse下新建Web project,命名为flexiGridDemo

2.把FlexiGrid包下所有的文件拷贝到WebRoot下

3.修改index.jsp页面

1)将FlexiGrid的样式表文件和js文件引入到页面

<link href="css/flexigrid.css" type="text/css" rel="stylesheet" />

<script src="js/jquery-1.5.2.min.js" type="text/javascript"></script>           <script src="js/jquery.flexigrid.js" type="text/javascript"></script>

2)在<body>中增加FlexiGrid的容器

<div id="ptable" style="margin: 10px">

<table id="flexTable" style="display: none"></table>

</div>

3)编写生成FlexiGrid的js代码:

<script type="text/javascript">

$(document).ready(function(){

var grid=$("#flexTable").flexigrid({

width: 760,

height: 280,

url: 'flexGridServlet.do',

dataType: 'json',

colModel : [

{display: '编号',

name : 'id',

width : 50,

sortable : true,

align: 'center',

hide: false,

toggle : false

},

{display: '工作名称',

name : 'job_name',

width : 250,

sortable : false,

align: 'center'

},

{display: '工作地址',

name : 'work_address',

width : 100,

sortable : true,

align: 'center'

},

{display: '工资',

name : 'salary',

width : 60,

sortable : true,

align: 'right',

process:formatMoney

},

{display: '日期',

name : 'date',

width : 120,

sortable : true,

align: 'center'

},

{display: '语言',

name : 'language',

width : 80,

sortable : true,

align: 'center'

}                                                                          ],

buttons : [

{name: 'add',

displayname: '新增',

bclass: 'add',

onpress: toolbarItem

},

{separator: true},

{ name: 'modify',

displayname: '修改',

bclass: 'modify',

onpress: toolbarItem

},

{separator: true},

{ name: 'delete',

displayname: '删除',

bclass: 'delete',

onpress: toolbarItem

}

],

searchitems : [

{display: '编号', name : 'id', isdefault: true},

{display: '工作名称', name : 'job_name'},

{display: '工作地址', name : 'work_address'},

{display: '语言', name : 'language'}

],

errormsg: '发生异常',

sortname: "id",

sortorder: "desc",

usepager: true,

title: '信息发布管理Flexigrid',

pagestat: '显示记录从{from}到{to},总数{total}条',

useRp: true,

rp: 10,

rpOptions: [10, 15, 20, 30, 40, 100],

nomsg: '没有符合条件的记录存在',

minColToggle: 1,

showTableToggleBtn: true,

autoload: true,

resizable: false,

procmsg: '加载中, 请稍等 ...',

hideOnSubmit: true,

blockOpacity: 0.5,

showcheckbox: true,

gridClass: "bbit-grid",

rowhandler: false,

rowbinddata: true,

onrowchecked: callme

});

function callme(){

alert("选中了");

}

function toolbarItem(com, grid) {

if (com=='delete'){

deleteMe();

}else if (com=='add'){

openDialogAdd();

}else if (com=='modify'){

openDialogModify();

}

}

//操作函数

function formatMoney(value, pid) {

return "¥" + parseFloat(value).toFixed(2);

}

function openDialogAdd(){

}

function openDialogModify(){

}

function deleteMe(){

}

});

</script>

4)编写后台代码

response.setContentType("text/html");

response.setCharacterEncoding("utf-8");

response.setHeader("Pragma", "no-cache");

response.setHeader("Cache-Control", "no-cache, must-revalidate");

response.setHeader("Pragma", "no-cache");

String sql = "";

// 当前第几页

String pageIndex = request.getParameter("page");

// 每页多少条

String pageSize = request.getParameter("rp");

// 条件字段值ֵ

String query = new String(request.getParameter("query").getBytes("ISO8859-1"), "UTF-8");

// 条件字段

String qtype = request.getParameter("qtype");

// 排序字段

String sortname = request.getParameter("sortname");

// desc or asc

String sortorder = request.getParameter("sortorder");

// 操作符

String qop = request.getParameter("qop");

int count = 0;

List list = null;

try {

sql = "select count(*) from job_info1" ;

if (!query.equals("")) {

sql += " where " + qtype + " like " + "'%" + query + "%'";

}

count = db.executeQuery(sql);

sql = "select * from job_info1";

if (!query.equals("")) {

sql += " where " + qtype + " like " + "'%" + query + "%'";

}

sql += " order by " + sortname + " " + sortorder;

sql += " limit " + ((Integer.parseInt(pageIndex) - 1) * Integer.parseInt(pageSize)) + "," + pageSize;

list = db.executeQueryList(sql);

if (list == null) {

System.out.println("======出错啦======");

return;

}

} catch (Exception e) {

e.printStackTrace();

}

Map map = new HashMap();

map.put("page", pageIndex);

map.put("total", count + "");

// to JSON

String json = toJSON(list, map);

response.getWriter().write(json);

response.getWriter().flush();

response.getWriter().close();

5)配置web.xml

<servlet>

<servlet-name>flexGridServlet</servlet-name>

<servlet-class>servlet.FlexiGridServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>flexGridServlet</servlet-name>

<url-pattern>/flexGridServlet.do</url-pattern>

</servlet-mapping>

6)sql脚本

CREATE TABLE `job_info1` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`job_name` varchar(255) DEFAULT NULL,

`date` varchar(255) DEFAULT NULL,

`work_address` varchar(255) DEFAULT NULL,

`salary` varchar(255) DEFAULT NULL,

`language` varchar(255) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=163 DEFAULT CHARSET=gbk;

INSERT INTO job_info1 VALUES ('3', '我的名声', '2009-12-04', '2009', '30.01', '英文');

INSERT INTO `job_info1` VALUES ('14', '14', '2009-12-05', '14io', '14.51', '英文');

INSERT INTO `job_info1` VALUES ('15', '15', '15', '15', '15.2', '中文');

INSERT INTO `job_info1` VALUES ('111', '111', '2009-12-04', '111', '12.2', '中文');

INSERT INTO `job_info1` VALUES ('116', 'qqq', '2009-12-01', 'www', '11.00', '英文');

INSERT INTO `job_info1` VALUES ('120', '12', '2009-12-15', '12', '3234.00', '中文');

INSERT INTO `job_info1` VALUES ('121', '我的k', '2009-12-04', '说到底', '10000', '英文');

INSERT INTO `job_info1` VALUES ('122', '我的kk', '2009-12-04', '啊可怜的', '10', '英文');

INSERT INTO `job_info1` VALUES ('123', '去1', '2009-12-07', 'iwio', '10', '英文');

INSERT INTO `job_info1` VALUES ('124', '1噢o', '2009-12-08', '2030', '1900', '中文');

INSERT INTO `job_info1` VALUES ('129', '其实', '2009-12-08', '阿斯科', '221', '英文');

INSERT INTO `job_info1` VALUES ('131', '其实', '2009-12-08', '阿斯科', '221', '英文');

INSERT INTO `job_info1` VALUES ('134', '世界', '2009-12-08', '东方方法', '14.00', '中文');

INSERT INTO `job_info1` VALUES ('135', '就啊是', '2009-12-08', '可看到', '22.00', '英文');

INSERT INTO `job_info1` VALUES ('136', '就啊是', '2009-12-08', '阿斯', '22.00', '中文');

INSERT INTO `job_info1` VALUES ('137', '世康', '2009-12-08', '萨芬成都市', '123', '英文');

INSERT INTO `job_info1` VALUES ('138', '显示卡', '2009-12-08', '收到反看', '123', '中文');

INSERT INTO `job_info1` VALUES ('139', '1东方法', '2009-12-08', '244ss', 'www', '中文');

INSERT INTO `job_info1` VALUES ('140', '发卡量', '2009-12-08', 'w', '45', '中文');

INSERT INTO `job_info1` VALUES ('141', '晚上', '2009-12-10', '时间', '100', '英文');

INSERT INTO `job_info1` VALUES ('142', '阿克接口', '2009-12-10', '问问', '10', '英文');

INSERT INTO `job_info1` VALUES ('143', 'wwwree', '2009-12-10', '23', '300.00', '英文');

INSERT INTO `job_info1` VALUES ('144', '111', '2009-12-10', '122', '12.00', '中文');

INSERT INTO `job_info1` VALUES ('145', '23456', '2009-12-10', '山东省', '1211', '英文');

INSERT INTO `job_info1` VALUES ('146', '请求权', '2009-12-25', '2111', '11112', '英文');

INSERT INTO `job_info1` VALUES ('148', '12112', '2009-12-10', '3', '22', '中文');

INSERT INTO `job_info1` VALUES ('149', '222', '2009-12-10', '121', '2121', '中文');

INSERT INTO `job_info1` VALUES ('150', '失算', '2009-12-10', '却完全', '1', '中文');

7)启动tomcat测试页面

四、API详解

1.FlexiGrid属性:

height:

默认值200, flexigrid的高度,单位为px

width:

默认值'auto', flexigrid的宽度,auto表示根据每列的宽度自动计算

striped:

默认值true, 是否显示斑纹效果,默认是奇偶交互的形式

novstripe:

默认值false,是否显示垂直分隔条,默认显示

minwidth:

默认值30, flexigrid列的最小宽度

minheight:

默认值80, flexigrid列的最小高度

resizable:

默认值false, 是否可调整大小

url:

默认值false, ajax方式获取数据对应的url地址

method:

默认值'POST', 数据发送方式

dataType:

默认值'json', 数据加载的类型,xml,json

errormsg:

默认值'发生错误', 错误提升信息

usepager:

默认值false, 是否显示分页条

nowrap:

默认值true, 是否不换行

page:

默认值1, 默认当前页

total:

默认值1,总页数

useRp:

默认值true, 是否可以动态设置每页显示的结果数

rp:

默认值25,默认每页显示的结果数

rpOptions:

默认值[10, 15, 20, 25, 40, 100], 可选择设定的每页结果数

title:

默认值false,标题

pagestat:

默认值'显示记录从{from}到{to},总数 {total} 条', 显示当前页和总页面的样式

procmsg:

默认值 '正在处理数据,请稍候 ...', 正在处理的提示信息

query:

默认值'', 搜索查询的条件

qtype:

默认值'', 搜索查询的类别

qop:

默认值"Eq", 搜索的操作符

nomsg:

默认值'没有符合条件的记录存在', 无结果的提示信息

minColToggle:

默认值1, 最少保留的列数

showToggleBtn:

默认值true, 是否显示隐藏列按钮

hideOnSubmit:

默认值true, 提交时是否显示遮盖

showTableToggleBtn:

默认值false, 是否显示伸缩按钮

autoload:

默认值true, 是否自动加载

blockOpacity:

默认值0.5, 透明度设置

onToggleCol:

默认值false,隐藏列时触发的函数

onChangeSort:

默认值false, 当改变排序时触发的函数

onSuccess:

默认值false, 成功后执行的函数

onSubmit:

默认值false, 调用自定义的函数

showcheckbox:

默认值false, 是否显示第一列的checkbox(用于全选)

rowhandler:

默认值false,启用行的扩展事件功能,在生成行时绑定事件,如双击,右键等

rowbinddata:

默认值false,配合上一个操作,如在双击事件中获取该行的数据

extParam:

默认值{},添加extParam参数可将外部参数动态注册到grid,实现如查询等操作

gridClass:

默认值"bbit-grid",flexigrid的样式

onrowchecked:

默认值false,在每一行的的checkbox选中状态发生变化时触发某个事件

2.FlexiGrid的方法:

flexigrid(p):

根据属性p创建flexigrid

flexReload(p)

根据属性p重新加载flexigrid

flexResize(w,h)

重新指定flexigrid宽度和高度

ChangePage(type)

改变当前页

flexOptions(p)

更新Option

GetOptions

获取Option

getCheckedRows

获取选中的行

flexToggleCol(cid, visible)

重新加载flexigrid

flexAddData(data)

为flexigrid增加数据

noSelect(p)

禁止选中

FlexiGrid使用手册的更多相关文章

  1. FREERTOS 手册阅读笔记

    郑重声明,版权所有! 转载需说明. FREERTOS堆栈大小的单位是word,不是byte. 根据处理器架构优化系统的任务优先级不能超过32,If the architecture optimized ...

  2. JS魔法堂:不完全国际化&本地化手册 之 理論篇

    前言  最近加入到新项目组负责前端技术预研和选型,其中涉及到一个熟悉又陌生的需求--国际化&本地化.熟悉的是之前的项目也玩过,陌生的是之前的实现仅仅停留在"有"的阶段而已. ...

  3. 转职成为TypeScript程序员的参考手册

    写在前面 作者并没有任何可以作为背书的履历来证明自己写作这份手册的分量. 其内容大都来自于TypeScript官方资料或者搜索引擎获得,期间掺杂少量作者的私见,并会标明. 大部分内容来自于http:/ ...

  4. Redis学习手册(目录)

    为什么自己当初要选择Redis作为数据存储解决方案中的一员呢?现在能想到的原因主要有三.其一,Redis不仅性能高效,而且完全免费.其二,是基于C/C++开发的服务器,这里应该有一定的感情因素吧.最后 ...

  5. JS魔法堂:不完全国际化&本地化手册 之 实战篇

    前言  最近加入到新项目组负责前端技术预研和选型,其中涉及到一个熟悉又陌生的需求--国际化&本地化.熟悉的是之前的项目也玩过,陌生的是之前的实现仅仅停留在"有"的阶段而已. ...

  6. Windows API 函数列表 附帮助手册

    所有Windows API函数列表,为了方便查询,也为了大家查找,所以整理一下贡献出来了. 帮助手册:700多个Windows API的函数手册 免费下载 API之网络函数 API之消息函数 API之 ...

  7. linux命令在线手册

    下面几个网址有一些 Linux命令的在线手册,而且还是中文的,还可以搜索.非常方便 Linux命令手册 Linux命令大全 Linux中文man在线手册 每日一linux命令

  8. Mysql完全手册(笔记二,使用数据与性能优化)

    一.使用数据 1.使用变量 MySQL也可以让我们以用户自定义的变量来存储select查询的结果,以便在将来select查询中使用.它们只会在客户会话期间存在,但是它们提供一个方便有效的方法来连接查询 ...

  9. html javascript css3 php3.2.3离线手册

    各位新年快乐! 愿大家"愿有前程可奔赴,也有岁月可回头"! 发现个离线手册很全的网站,分享大家,也mark自用. http://www.shouce.ren/ 手册网

随机推荐

  1. Dapper的使用

    轻量型ORM框架Dapper的使用 /// <summary> /// 查询操作 /// </summary> /// <typeparam name="T&q ...

  2. Appium之java API

    AppiumDriver getAppStrings() 默认系统语言相应的Strings.xml文件内的数据. driver.getAppStrings(String language) 查找某一个 ...

  3. 【Hibernate步步为营】--(一对多映射)之双向关联

    上篇文章讨论了单向关联的一对多映射,在一的一端维护双向的关系这样的做法尽管能实现可是存在非常多缺陷,首先生成非常多多余的SQL语句,由于多的一端不维护关系,仅仅有一的一端维护,在进行操作时一的一端会发 ...

  4. epoll()无论涉及wait队列分析

    事件1. epfd-file->eventpoll->wq: struct eventpoll {     ...     wait_queue_head_t wq;     //用于ep ...

  5. Nginx + IIS 配置,实现负载均衡

    当你的Web应用程序访问量大的时候,一台服务器可能会因为压力过大而无法处理所有的请求.此时,可以增加服务器,采用负载均衡来分担所有的请求.关于Nginx的作用,自行百度了解.总之,在Windows平台 ...

  6. mfc 链接时错误 文件函数重复定义

    我在HeaderFile里新建了一个函数,然后在程序里调用,一直出现这个错误,说这个函数重复定义, 发现是VS自动加到External dependencies里面了.把HeaderFile里的函数文 ...

  7. 网络的基本概念TCP, UDP, 单播(Unicast), 多播(多播)(Multicast)

    章相当低级,但相当重要! 我们周围一切差点儿都依赖于把事情抽象成低等级,并在某一点把它详细化,在一些设计概念中.接口层十分清晰而且目标非常集中,应用程序不用考虑操作系统怎样工作,操作系统也不用考虑硬件 ...

  8. java多线程学习(两)——创建一个线程

    一个.java创建两个线程的方法 1.从java.lang.Thread派生一个新类线程类,其覆盖run()方法 2.实现Runnable接口.重载Runnable接口中的run()方法. 使用Thr ...

  9. 省前训练...Orz

    A. 异形卵 Time Limit: 1000ms Memory Limit: 128000KB 64-bit integer IO format:      Java class name: Sub ...

  10. hdu2369 Broken Keyboard(类似dfs)

    转载请注明出处:http://blog.csdn.net/u012860063 题目链接:pid=2369">http://acm.hdu.edu.cn/showproblem.php ...