先说一下题外话:由于上篇文章发现新浪博客一个问题, 斜杠星...星斜杠的注释会被博客直接和谐掉,郁闷。如果新浪大神看到请帮忙解决下,顺便能加上代码点亮就更好了~!~

所以下面注释内容只能用//了

 

我们来创建mydemo2.html内容如下:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
<meta http-equiv="Cache-Control" content="no-cache" />
<title>GT-Grid 教程示例</title>

<link rel="stylesheet" type="text/css" href="./gt_grid.css" />
<script type="text/javascript" src="./gt_msg_cn.js"></script>
<script type="text/javascript" src="./gt_grid_all.js"></script>
<script type="text/javascript" >
// 教程中的代码就写在这个区域里.


//数据集,这里只是为了创建大量数据~!~
 function getClientTestData(max){
  max=max||100;
  var getInt=function(min,max) {
    min = min || 0;
    max = max || 100;
    var _min= Math.min(min,max);
    max=Math.max(min,max);
    min=_min;
    var step= max - min +1;
    var s= (Math.random()+1)*max*10 % step;
    var num= min +  s ;
    return parseInt(num,10);
  }

  var data=[];
  var gl=['M','F','U'];
  for (var i=0;i<max;i++){
   var record={ no : 30+i ,
     name : 'abc'+i ,
     age :getInt(12,15) ,
     gender : gl[getInt(1,9)%3] ,
     english : 50+getInt(1,49),
     math : 40+getInt(1,59)
    }
   data.push(record);
  }
  return data; 
 }

 

// 然后执行下面的语句, 客户端的数据就会有200条. (作为测试,我没有生成太多).
var data1 = getClientTestData( 200 );

 

//name :  字段的名字 (虽然时name 但是性质和id类似, 在一个数据集内要保持唯一性)
//type : 字段的类型  ( 目前只支持 string ,int, float , 为什么没有date类型?因为我觉得没必要,以后我会找机会解释一下我的想法和建议)
//index : 字段对应的"record的属性名". 根据index,GT-Grid就可以知道这一列 对应的时record哪个属性的值.

//当 type 为 string 时, 可省略type设置.
//当 index 和 name 一致时, 可省略 index设置.
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'    },
  {name : 'total'   , type: 'float',   initValue : function(record){  
  return record['math']+record['english'];  
  }
  },
  {name : 'detail'  ,  type: 'string'  , index : 'detail' }
 ]
}

//id : 列的唯一标识, 必须保证列表内唯一,建议整个页面唯一.
//header : 列表的表头显示的文字信息.
//fieldName : 列表的该列对应的 dataset中的列(字段).

//如果 fieldName 和 id一致 那么可以省略fieldName设置


//renderer函数-------
//value : 相应单元格对应的数据值 (本例中为null, 因为数据集中 根本就没有detail列)
//record : 迭代中当前的record
//columnObj : 当前的column对象,
//grid : 当前的grid对象.
//colNo : 当前的列号
//rowNo : 迭代中当前的行号

var colsConfig = [
  { id : 'no'     ,header : "学号" , width : 50 , fieldName : 'no'    },
  { id : 'name'   ,header : "姓名" , width : 100 , fieldName : 'name'   },
  { id : 'age'    ,header : "年龄" , width : 50 , fieldName : 'age'    },
  //将M/F变成男/女.
  //GT.Grid.mappingRenderer函数有两个参数:
  //第一个是用来做映射的json-object,
  //第二个是数据不满足映射关系时 希望返回的值.
  { id : 'gender'  , header : "性别" , width : 50 ,
   renderer : GT.Grid.mappingRenderer(  {'U': '未知' , 'M':'男', 'F':'女'} , '未知' )
  },
  { id : 'english' , header : "英语"  , width : 60 , fieldName : 'english'  },
  { id : 'math'    , header : "数学"  , width : 60 , fieldName : 'math' },

  //总成绩大于170分的 用红颜色标识出来(因为这是一个很不错的成绩),
  //而120分以下的用蓝色标识出来(成绩很差).
  { 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;
   }
  },
  { id : 'detail'   , header : "详细信息" , width : 200,  
        renderer : function(value ,record,columnObj,grid,colNo,rowNo){  
           return '<a href=".?no='+record['no']+'" >'+ record['name'] +' 的详细信息</a>'+'  坐标('+colNo+','+rowNo+')';  
        }  
    }
];

//id : 每个列表组件都有一个id 该id在页面内唯一.
//dataset :列表对应的数据集
//columns : 见colsConfig.
//container : 列表的容器的id. 列表最后是要显示在页面中某个位置.这个容器就是那个"位置",通常是一个div或者时td.
//toolbarPosition : 工具栏的位置. 可选值:'top'/'bottom'/null,  暂时不支持上下都显示.
//toolbarContent : 工具栏上要显示的东西,
//    state,info表示的数据数量信息(分页信息),如共几条 共几页 当前是第几条等等.
//    nav代表的就是 导航按钮区.
//    reload刷新列表.
//    goto代表直接调转到指定页.
//    pagesize可以配置每页显示数目,默认只有pageSize数目
//pageSize : 每页显示的数目
//pageSizeList:当toolbarContent有pagesize属性时生效,配置可选页数


var gridConfig={
 id : "grid1", 
 dataset : dsConfig ,
 columns : colsConfig ,
 container : 'grid1_container',
 toolbarPosition : 'bottom',
 toolbarContent : 'nav |  reload | goto | pagesize |  info',
 pageSize : 10  ,
 pageSizeList : [5,10,15,20,50]
};

//加载配置信息
var mygrid=new GT.Grid( gridConfig );

//mygrid为之前创建的对象,此处也可以传入grid的id.
GT.Utils.onLoad( GT.Grid.render(mygrid) ); 

 

</script>
</head>

<body>
<!-- grid的容器. -->
<div id="grid1_container" style="width:900px;height:300px">
</div>

 </body>
</html>

 

没有登录不能评论