`

GridPanel表格

阅读更多

ExtJs 备忘录(5)—— GirdPanl表格(一) [ 基本用法 ]


前言

  文章内容几经变动,由于相关文章实在是很多而有打退堂鼓之心,倒是忘了备忘之意,于是尽量收集总结多一些资料。

 

系列

  1.  ExtJs 备忘录(1)—— Form表单(一) [ 控件使用 ]
  2.  ExtJs 备忘录(2)—— Form表单(二) [ 控件封装 ]
  3.  ExtJs 备忘录(3)—— Form表单(三) [ 数据验证 ]
  4.  ExtJs 备忘录(4)—— Form表单(四) [ 数据提交 ]
  5.  ExtJs 备忘录(5)—— GirdPanl表格(一)[ 基本用法 ]

 

参考文章

  1.  Ext.data.JsonReader的fields属性详解

  2.  Ext.data.Store的基本用法

  3.  Extjs3.0的变动记录(转载)

  4.  ext.grid的配置属性和方法

 

正文

  一、效果图

  

 

  二、涉及到相关组件部分中文说明

    2.1  Ext.grid.GridPanel

      stripeRows: true,  //隔行换色

      viewConfig: {   forceFit: true  },  //自动均分列宽

      selModel: new Ext.grid.RowSelectionModel({ singleSelect: true }),  //设置选中模式

      loadMask: { msg: '正在加载数据,请稍侯……' },  //加载完成前显示信息,设置为true则显示Loading

      autoDestroy //Boolean 销毁store当组件的store已经被绑定并销毁 (?? 没有测试出来,后续文章继续测)

      columnLines: true,  //显示列线条

      

    2.2  Ext.grid.ColumnModel

      header       //表格列头名称

      dataIndex    //字段名称

      sortable     //是否允许按列排序,默认为false

      resizable:false  //是否可改变列宽,默认为true

      menuDisabled: true  //是否禁用(不显示)列头菜单项,默认false

      hidden:false   //是否隐藏本列

      renderer:    //渲染,自定义格式输出

        Ext.util.Format.dateRenderer('Y-m-d')  //'Y年m月d日'输出日期格式

        Ext.util.Format.usMoney         //以货币格式显示数字,如$10.00

        function(value,metadata,record,rowIndex, colIndex, store) //自定义函数输出

        //列提示

        

        renderer: function (v,p) {
          //v : value , p : cell
          p.attr = 'ext:qtitle="' + "标题" + v + '"';
          p.attr += ' ext:qtip=" 说明... ' + v + '"';
          return v;
        }

 

    2.3  Ext.data.JsonReader

      //样例JSON数据:{count:10,result:[{"Id":0,"Email":"test163.com","Name":"test0","Gender":1}]}

      totalProperty: 'count',  //数据总行数key

      root: 'result'        //数据

      fields: []          //字段,可以省略fields:,直接写[],下面代码中可看得到

        name         //字段名称

        mapping        //将json对象中指定属性值映射到此字段,如果name与json中指定属性名一样这里不需指定

        type         //字段类型,可选值:string、int、float、boolean、date,不指定无变化

        dateFormat      //格式化日期字符串

        defaultValue     //当字段值在原数据中不存在时所取的默认值,默认为空字符串。

        convert:function(v){  return "("+v+")";}  //输出前手工处理数据

 

    2.4  Ext.data.Store

      proxy     //从某个途径读取原始数据

      reader    //将原始数据转换成Record实例

      sortInfo: {field: 'Id', direction: 'DESC'}  //字段排序

      remoteSort:true //会导致每次执行sort()时都要去后台重新加载数据,而不能只对本地数据进行排序。默认为false,本地排序。

 

  三、 实现功能

    从aspx后台获取JSON格式数据以表格形式显示。

    前端代码:

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->    <script type="text/javascript">
        Ext.onReady(function() {
            Ext.QuickTips.init();
            Ext.form.Field.prototype.msgTarget = 'side';

            
var dataReader = new Ext.data.JsonReader({
                totalProperty: 'count',
                root: 'result'
            },[
                    { name: 'Name' },
                    { name: 'Id',sortDir:'ASC' },//ASC DESC
                    { name: 'Email',convert:function(v){  return "("+v+")";} },
                    { name: 'Gender' }
            ]);

            
var store = new Ext.data.Store({
                proxy: new Ext.data.HttpProxy({
                    url: 'table.aspx?method=search',
                    method: 'GET'
                }),
                reader: dataReader,
                sortInfo: {field: 'Id', direction: 'DESC'}//ASC
                ,autoLoad:true
                
//,autoDestroy:true
            });

            
function GenderCovert(value,metadata,record,rowIndex, colIndex, store){
                
if(value == 1)
                    
return "";
                
else
                    
return "";
            }

            
var dataColumns = new Ext.grid.ColumnModel({
                columns: [
                    { header: "编  号",draggable:true, dataIndex: 'Id', sortable: true},
                    { header: "名  称", dataIndex: 'Name',resizable:false },
                    { header: "邮  箱", dataIndex: 'Email',menuDisabled: true,
                        renderer: function (v,p) {
                            
//v : value , p : cell
                            p.attr = 'ext:qtitle="' + "标题" + v + '"';
                            p.attr += ' ext:qtip=" 说明 ' + v + '"';
                            
return v;
                    } },
                    { header: "性  别", dataIndex: 'Gender',renderer:GenderCovert }
                ],
                defaults: {
                    align: 'center'
                    
                }
            });

            
var grid = new Ext.grid.GridPanel({
                store: store,
                cm: dataColumns,    //columns: [{}]
                renderTo: Ext.getBody(),
                autoExpandColumn: 1,
                autoHeight: true,
                buttonAlign:'center',
                border: true,
                disableSelection: true,
                frame: true,
                loadMask:true,// { msg: '正在加载数据,请稍侯……' },     //loadMask: true,
                //stripeRows: true, //斑马线效果 
                width: 950,
                
                title:'表格',
                
//设置单行选中模式
                selModel: new Ext.grid.RowSelectionModel({ singleSelect: true }),
                
//columnLines: true,//显示列线条
                viewConfig: {   forceFit: true  }//使列自动均分
                ,buttons: [{
                    text: "重新加载"
                        ,handler:function(){
                        store.load();
                    }
                }]
            });
        });

     后端代码:

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->    public override string Search()
    {
        
int start = -1;
        
int.TryParse(Request.QueryString["start"], out start);
        
int limit = -1;
        
int.TryParse(Request.QueryString["limit"], out limit);

        IList<User> result = new List<User>();

        
int rnd = new Random().Next(120);
        
for (int i = 0; i < rnd; i++)
        {
            result.Add(BuildUser(i));
        }


        
return new StringBuilder().Append("{count:")
        .Append(20)
        .Append(",result:")
        .Append(JavaScriptConvert.SerializeObject(result))
        .Append('}')
        .ToString();
    }

    
private User BuildUser(int number)
    {
        
return new User()
        {
            Id = number,
            Email = string.Format("test{0}163.com", number),
            Name = string.Format("test{0}", number),
            Gender = new Random().Next(2)
        };
    }

    
class User
    {
        
/// <summary>
        
/// 编号
        
/// </summary>
        public int Id { getset; }
        
/// <summary>
        
/// 邮箱
        
/// </summary>
        public string Email { getset; }
        
/// <summary>
        
/// 名称
        
/// </summary>
        public string Name { getset; }
        
/// <summary>
        
/// 性别 0 女 1 男
        
/// </summary>
        public int Gender { getset; }
    }

     代码说明:

      1.  使用了开源组件Newtonsoft.Json.dll,支持将数组对象序列化成JSON字符串,非常方便。

      2.  随机返回客户端数据,访问方式请参照系列前面的文章。

 

  三、 代码下载

    ExtJS2009-11-15

分享到:
评论

相关推荐

    ExtJs设置GridPanel表格文本垂直居中示例

    在ExtJs中,`GridPanel` 是一个非常重要的组件,用于展示数据表格。在实际的业务场景中,我们经常需要对表格内的文本进行格式化,例如使其垂直居中。本篇将详细介绍如何在ExtJs中设置`GridPanel`表格文本垂直居中。 ...

    ExtJS 表格面板GridPanel完整例子

    ExtJS表格面板(GridPanel)是Sencha Ext JS框架中的一个核心组件,它用于展示大量结构化数据。在本文中,我们将深入探讨如何创建并使用一个完整的ExtJS GridPanel实例,以及与其相关的源码和工具。 首先,让我们...

    Extjs gridpanel 出现横向滚动条问题的解决方法

    代码如下:viewConfig : { layout : function() { if (!this.mainBody) { return; // not rendered } var g = this.grid; var c = g.getGridEl(); var csize = c.getSize(true); var vw = csize.width;...

    轻松搞定Extjs

    表格组件是展示大量数据的最佳选择,GridPanel则是Extjs中最强大的表格组件之一。 - **表格、表格面板**: 简要介绍了表格组件的基本概念。 - **列模型与数据**: 详细解释了如何定义列模型以及填充表格数据。 - **...

    Ext实现GridPanel内嵌行内嵌表格(RowExpander)

    在本文中,我们将深入探讨如何使用ExtJS库中的RowExpander插件来实现在GridPanel中内嵌行内的表格。ExtJS是一个强大的JavaScript框架,它提供了丰富的组件和功能,用于构建复杂的Web应用程序。RowExpander插件是...

    string

    通过以上分析,我们可以看出这是一个使用Ext JS框架创建的简单电影数据库表格示例,其中涉及到了数据模型、数据读取器、数据存储、进度条控件以及GridPanel表格等关键概念和技术点。这些技术点在实际开发中非常实用...

    extjs动态生成表格,前台+后台

    1. GridPanel:ExtJS中的核心组件,用于显示和操作表格数据。 2. ColumnModel:定义了GridPanel的列结构,包括列头和数据映射。 3. Store:用于存储数据的组件,可以与后端服务器进行交互。 4. Ext.Ajax.request:...

    给Extjs的GridPanel增加“合计”行

    在EXTJS中,GridPanel是一种常用的组件,用于展示表格数据。在实际应用中,我们经常需要在GridPanel底部显示一行“合计”行,以便对某一列或多列的数据进行求和或其他统计操作。这篇博文“给Extjs的GridPanel增加...

    EXTJSEXT实例GridPanel.

    EXTJS的核心是其组件模型,GridPanel就是其中一种非常重要的组件,常用于展示数据表格。这个实例"EXTJSEXT实例GridPanel"旨在教授如何在EXTJS中创建并使用GridPanel。 GridPanel是EXTJS中的一个核心组件,它允许...

    ext.net 动态创建gridpanel

    GridPanel 是 ExtJS(Ext.NET 的基础)中的一个重要组件,用于展示数据表格。在这个场景中,我们将深入探讨如何使用Ext.NET代码动态创建GridPanel,并在各种窗口中灵活展示。 1. **动态创建GridPanel**: 在Ext...

    gridPanel添加按钮

    `gridPanel`在诸如ExtJS、GWT或PrimeFaces等框架中常见,它们提供了丰富的功能来处理表格数据,包括排序、筛选、分页等。 首先,让我们了解`gridPanel`的基本结构。`gridPanel`由多个部分组成,如头部(header)、...

    Ext.grid.GridPanel属性祥解

    `Ext.grid.GridPanel`是ExtJS中用于展示表格数据的核心组件之一。它提供了丰富的配置选项和方法来帮助开发者灵活地控制表格的表现形式及功能。对于初学者或者希望深入理解`GridPanel`特性的Web开发人员来说,掌握其...

    Ext的gridpanel控件二次加载问题

    在Ext JS这个强大的JavaScript框架中,GridPanel是一个非常重要的组件,用于展示数据表格。然而,在实际应用中,可能会遇到一个常见的问题:当GridPanel需要进行第二次加载时,数据或者功能可能会丢失。这个问题主要...

    Extjs入门教程(treePanel和GridPanel)

    GridPanel则是ExtJS中的表格视图组件,它可以展示大量的数据,并提供排序、筛选、分页等功能。在集成TreePanel和GridPanel时,可能涉及到的概念有:将TreePanel的节点与GridPanel的数据关联,实现点击树节点时动态...

    GridPanel属性详解

    `Ext.grid.GridPanel` 是ExtJS中用于展示表格数据的核心组件之一。它提供了丰富的配置选项和方法来帮助开发者灵活地控制表格的表现形式及功能。接下来,我们将详细探讨`Ext.grid.GridPanel`的一些关键属性。 #### ...

    Ext GridPanel 中实现加链接操作

    Ext GridPanel 是该框架中的一个重要组件,常用于展示表格数据。本文将详细介绍如何在 Ext GridPanel 中实现加链接操作,包括基本原理、代码实现及注意事项。 #### 一、Ext GridPanel 基础 在了解如何添加链接之前...

    Ext.net实现GridPanel拖动行、上移下移排序功能DEMO

    对于GridPanel中拖动选中行排序的实现,网上有不少ExtJs实现的例子,但是没有找到使用Ext.net实现的,正好最近有个需求要使用,干脆来写一个。 DEMO功能说明: 1、拖动GridPanel选中行到新位置排序。 2、在拖动结束...

Global site tag (gtag.js) - Google Analytics