现在的位置: 首页 > 综合 > 正文

\t\text 表格GridPanel学习例子

2014年07月16日 ⁄ 综合 ⁄ 共 5467字 ⁄ 字号 评论关闭

  ext 表格GridPanel学习例子 - xiaojunwei1987 - http://hi.baidu.com/

效果图:

代码:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=gbk">
    <title>Toolbar with Menus</title>
    <link rel="stylesheet" type="text/css" href="../../ext-3.2.1/resources/css/ext-all.css"/>
<style type="text/css">  
   .red-row { background-color:#F5C0C0 }
   .yellow-row { background-color:#FBF8BF !important;}
   .green-row { background-color:#99CC99 !important;}
   .center{text-align:center}
</style>
    <!-- GC -->
    <!-- LIBS -->
    <script type="text/javascript" src="../../ext-3.2.1/adapter/ext/ext-base.js"></script>
    <!-- ENDLIBS -->

    <script type="text/javascript" src="../../ext-3.2.1/ext-all.js"></script>

   <script type="text/javascript">
      // 支持中文排序
   Ext.onReady(function(){
    Ext.data.Store.prototype.applySort = function() {
    if (this.sortInfo && !this.remoteSort) {
     var s = this.sortInfo;
     var f = s.field;
     var st = this.fields.get(f).sortType;
     var fn = function(r1, r2) {
      var v1 = st(r1.data[f]);
      var v2 = st(r2.data[f]);
      if (typeof(v1) == 'string') {
       return v1.localeCompare(v2);
      }
      return v1 > v2 ? 1 : (v1 < v2 ? -1 : 0);
     };
     this.data.sort(s.direction, fn);
     if (this.snapshot && this.snapshot != this.data) {
      this.snapshot.sort(s.direction, fn);
     }
    }
   };
  
   // 在表格每行前面加一个复选框;
   var sm = new Ext.grid.CheckboxSelectionModel({handleMouseDown:Ext.emptyFn});

   // 首先创建表格列模型;
   var cm = new Ext.grid.ColumnModel([
    new Ext.grid.RowNumberer(),
    sm,
    { header:'编号',dataIndex:'id',width:60,sortable:true,editor:new Ext.grid.GridEditor(new Ext.form.TextField({allowBlank:true}))},
    { header:'性别',dataIndex:'sex',renderer:renderSex,editor:new Ext.grid.GridEditor(new Ext.form.TextField({allowBlank:false}))},
    { header:'名称',dataIndex:'name',width:80,sortable:true,editor:new Ext.grid.GridEditor(new Ext.form.TextField({allowBlank:false}))},
    { header:'描述',dataIndex:'descn',width:200,sortable:true,renderer:renderDescn,editor:new Ext.grid.GridEditor(new Ext.form.TextField({allowBlank:false}))},
    { header:'日期',dataIndex:'date',width:200,type:'date',editor:new Ext.grid.GridEditor(new Ext.form.DateField({
    allowBlank:false,
    format:'Y-m-d',
    minValue:'2007-12-14',
    disabledDays:[0,6],
    disabledDaysText:'只能选择工作日'
    })),
    renderer:function(value){
     return value.format("Y-m-d");
    }
    }
   
   ]);

   //渲染日期
  
   //渲染性别;
   function renderSex(value){
     if ( value == 'male' ){
      return "<span style='color:red;font-weight:bold;'>红男</><img src='user_male.png'/>";
     }else {
      return "<span style='color:green;font-weight:bold;'>绿女</span><img src='user_female.png'/>";
     }
   }
   //渲染描述;
   function renderDescn( 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 ;
   }
   //JavaScript 定义的二维数组;
   var data = [
    ['1','啊','male','descn1','1970-01-15T02:58:04'],
    ['2','啵','female','descn2','1970-01-15T02:58:04'],
    ['3','呲','male','descn3','1970-01-15T02:58:04'],
    ['4','嘚','female','descn4','1970-01-15T02:58:04'],
    ['1','啊','male','descn1','1970-01-15T02:58:04'],
    ['1','啊','male','descn1','1970-01-15T02:58:04'],
    ['2','啵','female','descn2','1970-01-15T02:58:04'],
    ['3','呲','male','descn3','1970-01-15T02:58:04'],
    ['4','嘚','female','descn4','1970-01-15T02:58:04'],
    ['1','啊','male','descn1','1970-01-15T02:58:04'],
    ['2','啵','female','descn2','1970-01-15T02:58:04'],
    ['3','呲','male','descn3','1970-01-15T02:58:04'],
    ['4','嘚','female','descn4','1970-01-15T02:58:04'],
    ['1','啊','male','descn1','1970-01-15T02:58:04'],
    ['2','啵','female','descn2','1970-01-15T02:58:04'],
    ['3','呲','male','descn3','1970-01-15T02:58:04'],
    ['4','嘚','female','descn4','1970-01-15T02:58:04'],
    ['1','啊','male','descn1','1970-01-15T02:58:04'],
    ['2','啵','female','descn2','1970-01-15T02:58:04'],
    ['3','呲','male','descn3','1970-01-15T02:58:04'],
   
    ['5','咯','male','descn5','1970-01-15T02:58:04']
   
   ];
   // 装载数据;
   var store = new Ext.data.Store({
    proxy: new Ext.data.MemoryProxy(data),
    reader: new Ext.data.ArrayReader({},[
     {name: 'id'},
     {name: 'sex',mapping:2},
     {name: 'name',mapping:1},
     {name: 'descn'},
     {name: 'date',type:'date',dateFormat:'Y-m-dTH:i:s'}
    ])
   });
  
  
   //把数据装配在一起;
    var grid = new Ext.grid.GridPanel({
    renderTo:'grid',
    store:store,
    cm:cm,
    sm:sm,
    clicksToEditor:1,
    height:400,
    width:600,
    enableColumnMove:false,
    enableColumnResize:false,
    stripeRows:true,
    loadMask:true,
    autoExpandColumn:'date',
    autoHeight:false,
    bbar: new Ext.PagingToolbar({
     pageSize:10,
     store:store,
   
     displayInfo:true,
     displayMsg:'显示第{0} 条 到 {1} 条记录,一共 {2} 条',
     emptyMsg:"没有记录"    
    }),
    viewConfig:{
    
     forceFit:true ,
     enableRowBody: true ,
     scrollOffset:30,
     columnsText:'显示的列',
     getRowClass : function ( record , rowIndex , p , ds ){
      var cls = 'green-row' ;
      switch ( record.data.color )
      {
       case '#FBF8BF' :
       cls = 'yellow-row'
       break;

       case '#99CC99':
       cls = 'green-row'
       break ;

       case '#F5C0C0' :
       cls = 'red-row'
       break ;
      }
      return cls ;

     }   
    
    }
   
   });
   // 装载并初始化数据;
   store.load();
  
  
   // 触发按钮事件 ;
   Ext.get('remove').on('click',function () {
    store.remove(store.getAt(1));
    grid.view.refresh();
   });

  

});
   </script>

   </head>
<body>
<div id="grid"   style="margin-top:30px">
</div>
<div style="margin-top:10px">
<input   type="button" id="remove" name="remove" value="删除第二行" />

<div>
</body>
</html>

抱歉!评论已关闭.