GT-Grid
1.简介:
2.GT-Grid 所需文件
3.初学实例
(1)首先在index.jsp中引入js和css文件
<link rel="stylesheet" type="text/css" href="gt-grid/gt_grid.css" /> <script type="text/javascript" src="gt-grid/gt_msg_cn.js"></script> <script type="text/javascript" src="gt-grid/gt_grid_all.js"></script>
主要就是以下几步:
1. var data1 ... //定义数据
数据必须为一个json数组, 数组中的每一项为一个 js对象/js数组.两种形式的数据都是可以的.(但是不能混合使用). 一般使用js对象(绝大多数
json的第三方转换工具 都会将pojo map等转换成第一种形式的json数据. 而且也更便于反向转换)
数组中的每一项 代表 单条数据. 简称 record.
//1.创建数据 var data1 ... var data1 = [ { no : 1, name : ‘aaa‘, age : 12, gender : ‘M‘, english : 76.5, math : 92 }, { no : 2, name : ‘bbb‘, age : 11, gender : ‘F‘, english : 89, math : 87 }, { no : 3, name : ‘ccc‘, age : 13, gender : ‘F‘, english : 53, math : 62 } ];
2. var dsConfig .... //定义数据集
有了数据还不够, 因为GT-Grid未必就能理解这些数据, 你还需要对数据进行简单的描述.这个描述就是定义数据集.
//2.创建数据集 var dsConfig .... var dsConfig = { data : data1, fields : [ { name : ‘no‘, type : ‘int‘, index : ‘no‘ }, { name : ‘name‘, type : ‘string‘, index : ‘name‘ }, { name : ‘age‘, type : ‘int‘, index : ‘age‘ }, { name : ‘gender‘, type : ‘string‘, index : ‘gender‘ }, { name : ‘english‘, type : ‘float‘, index : ‘english‘ }, { name : ‘math‘, type : ‘float‘, index : ‘math‘ } ] };
代码讲解:
data 指向 之前的数据.
fields 是一个数组, 描述record各个字段的信息,类似数据库表中的列信息.
name : 字段的名字 (虽然时name 但是性质和id类似, 在一个数据集内要保持唯一性) type : 字段的类型 ( 目前只支持 string ,int, float , 为什么没有date类型?因为我觉得 没必要,以后我会找机会解释一下我的想法和建议)
index : 字段对应的"record的属性名". 根据index,GT-Grid就可以知道这一列 对应的 时record哪个属性的值.
index说白了就是你数据库里面的列名;也可以说成是:通过后台转换后生成的json 格式数据里面的key;
当 type 为 string 时, 可省略type设置.
当 index 和 name 一致时, 可省略 index设置.
3. var colsConfig ... //定义列信息
定义每一列的列标头和以及该列对应的数据
//3.设计列 var colsConfig ... var colsConfig = [ { id : ‘no‘, header : "学号", fieldName : ‘no‘ }, { id : ‘name‘, header : "姓名", fieldName : ‘name‘ }, { id : ‘age‘, header : "年龄", fieldName : ‘age‘ }, { id : ‘gender‘, header : "性别", fieldName : ‘gender‘ }, { id : ‘english‘, header : "英语", fieldName : ‘english‘ }, { id : ‘math‘, header : "数学", fieldName : ‘math‘ } ];
header : 列表的表头显示的文字信息.
fieldName : 列表的该列对应的 dataset(数据集)中的列(字段).
4. var gridConfig .... //定义gt-grid控件
//4.设计grid的参数 var gridConfig .... var gridConfig = { id : "grid1", dataset : dsConfig, columns : colsConfig, container : ‘grid1_container‘, toolbarPosition : ‘bottom‘, toolbarContent : ‘state‘ };
5. var mygrid=new GT.Grid( gridConfig );
定义并创建GT-Grid对象.创建GT-Grid对象的方法
//5.var mygrid=new GT.Grid( gridConfig );定义并创建GT-Grid对象.创建GT-Grid对象的方法 var mygrid = new GT.Grid(gridConfig);
6. GT.Utils.onLoad( GT.Grid.render(mygrid) );//onLoad加载
//6. load加载 GT.Utils.onLoad(GT.Grid.render(mygrid));
<body> <!-- grid的容器. --> <div id="grid1_container" style="width:700px;height:300px"></div> </body>
4.进一步完善
Renderer方法:
单词的意思:渲染器,描绘器;
在gt-grid里面叫做叫做"扩展显示列". 作用是:用来显示一些数据以外的东西
比如:一个按钮或者是图片 或者是链接, 点击后可以执行一些特殊的操作 如:
var colsConfig = [ /* ...其他column略 ... */ { id : ‘detail‘ , header : "详细信息" , width : 120, renderer : function(value ,record,columnObj,grid,colNo,rowNo){ return ‘<a href=".?no=‘+record[‘no‘]+‘" >‘+ record[‘name‘] +‘ 的详细信息</a>‘; } } ];
相应单元格内.
renderer 函数的里面会有 6个参数,依次为
1. value : 相应单元格对应的数据值 (本例中为null, 因为数据集中 根本就没有detail列)
2. record : 迭代中当前的record
3. columnObj : 当前的column对象,
4. grid : 当前的grid对象.
5. colNo : 当前的列号
6. rowNo : 迭代中当前的行号
个性化渲染列
var colsConfig = [ /* ...其他column略 ... */ { id : ‘total‘ , header : "总成绩" , width : 70 , align :‘right‘, renderer : function(value ,record,columnObj,grid,colNo,rowNo){ var total = record[‘total‘]; if (total>170) { total = ‘<span style="color:red" >‘+ total +‘</span>‘; }else if (total<120) { total = ‘<span style="color:blue" >‘+ total +‘</span>‘; } return total; } }];
toolbarContent : ‘nav | goto | pagesize | state‘ , 大家要注意, nav ,| ,state 三者之间
有空格间隔. nav:代表的就是 导航按钮区.
导航区中包含了 四个按钮: 第一页 前一页 后一页 最后一页
goto :"直接调转到指定页"的功能.
pageSize :页容
toolbarPosition : 工具栏的位置. 可选值:‘top‘/‘bottom‘/null, 暂时不支持上下都显示.
remotePaging :是否远程分页(true、false)
loadURL:分页的连接(比如:loadURL:’totalfieldpage.action’);如果有命名空间的
话,一定要加上命名空间,如果没有的话,可以放个action
效果:
原文:http://blog.csdn.net/yantingmei/article/details/23371821