1.引入必要的Ext支持
??? <link rel="stylesheet" type="text/css" href="../../resources/css/ext-all.css" />
???? <script type="text/javascript" src="../../adapter/ext/ext-base.js"></script>
???? <script type="text/javascript" src="../../ext-all.js"></script>
2.Ext.Grid表格
?<script>
???? //设置表头 sortable设置是否可以排序 renderer的值是个function会把该列的值传进去,获得function的返回值显示该列
???? var cm = new Ext.grid.ColumnModel(
???? [
????? {header:'id',dataIndex:'id',sortable: true,width: 75},
???{header:'性别',datIndex:'sex',sortable:true,width:75,renderer:renderSex},
???{header:'name',dataIndex:'name',sortable: true,width: 75},
????? {header:'des',dataIndex:'des',sortable: true,width: 100,renderer:renderDes}
??]
? );
? //添加数据
?var data = [
??? ['1','male','name1','des1'],
??? ['2','female','name2','des2'],
??? ['3','male','name3','des3'],
??? ['4','female','name4','des4'],
??? ['5','male','name5','des5']
?];
?//按如下列解析数据
?var ds = new Ext.data.ArrayStore({
????? fields:
?? [
????? {name:'id'},
???{name:'sex'},
???{name:'name'},
???{name:'des'}
?? ]
?});
?ds.loadData(data);
?
?//装配表头和数据为表格?
?var grid = new Ext.grid.GridPanel(
?{
??? el:'grid', //要渲染的位置ID
??? ds:ds,
??? cm:cm,
??? stripeRows: true,
??? height: 300,? //表格高度
?????? width: 380,?? //表格宽度
??? title: 'Array Grid',? //面板title
??? stateful: true
?});
?grid.render();
?
?//判断是男就设置红色,是女就设置绿色
?function renderSex(value)
?{
???? if(value == 'male')
??{
???? return "<span? style='color:red;font-weight:bold;'> 红男</span><img src='user_gray.png' />";
??}
??else
??{
???? return "<span style='color:green;font-weight:bold;'>绿女</span><img src='user_female.png' />";
??}
?}
?
?
?/**
?? value是当前单元格的值
???? cellmeta里保存的是cellId单元格id,id不知道是干啥的,似乎是列号,css是这个单元格的css样式。
???? record是这行的所有数据,你想要什么,record.data["id"]这样就获得了。
???? rowIndex是行号,不是从头往下数的意思,而是计算了分页以后的结果。
???? columnIndex列号太简单了。
???? store,这个厉害,实际上这个是你构造表格时候传递的ds,也就是说表格里所有的数据
?*/
?//查看该行的详细信息
?function renderDes(value, cellmeta, record, rowIndex, columnIndex, store)
?{
??? var str = "<input type='button' value='详细信息' onclick='alert(\""+
??????? "这个单元格的值是:"+value+"\\n"+
???? "这个单元格的配置是:{cellId"+cellmeta.cellId+",id:"+cellmeta.id+",css:"+cellmeta.css+"}\\n"+
?????????? "这个单元格对应行的record是:" + record + ",一行的数据都在里边\\n" +
?????????? "这是第" + rowIndex + "行\\n" +
????????? "这是第" + columnIndex + "列\\n" +
????????? "这个表格对应的Ext.data.Store在这里:" + store + ",随便用吧。" +
??? "\")' />";
??? return str;
?}
? </script>
3.定义渲染的div
<div id="grid">
??</div>
4.给表第一列加为复选框
//设置多选sm既要放到cm里面也要放到grid里面
? var sm = new Ext.grid.CheckboxSelectionModel();
?
//设置表头 sortable设置是否可以排序 renderer的值是个function会把该列的值传进去,获得function的返回值显示该列
???? var cm = new Ext.grid.ColumnModel(
???? [
????? //系统自动加上序号
????? new Ext.grid.RowNumberer(),
???//添加checkbox
???sm,
????? {header:'id',dataIndex:'id',sortable: true,width: 75},
???{header:'性别',datIndex:'sex',sortable:true,width:75,renderer:renderSex},
???{header:'name',dataIndex:'name',sortable: true,width: 75},
????? {header:'des',dataIndex:'des',sortable: true,width: 100,renderer:renderDes}
??]
? );
?
//装配表头和数据为表格?
?var grid = new Ext.grid.GridPanel(
?{
??? el:'grid', //要渲染的位置ID
??? ds:ds,
??? cm:cm,
??? sm:sm,??? //添加checkbox
??? height: 300,? //表格高度
?????? width: 380,?? //表格宽度
??? title: 'Array Grid',? //面板title
??? stateful: true
?});
?grid.render();