有时候,我们在grid里渲染数据时,由于某些字段的内容太长,而grid又不会自动出现滚动条,于是溢出的内容后面就会出现省略号, 导致信息展示不完全。如果,这个信息不太重要,展示不完全也无关紧要。可是,有时候,用户需要查看溢出部分的详细内容时,怎么办呢?比如下图中的grid:

 
因为信息内容太长,导致“消息内容”展示不全,这时候想要查看详细信息怎么办呢?
最简单的解决方法就是利用 Ext.grid.plugin.RowExpander 
 
我们在grid配置项里面添加一个plugins属性。如下图所示
 this.plugins = [
  {
    ptype: 'rowexpander',
    rowBodyTpl : new Ext.XTemplate(
      '<p >信息详情</p>',
      '<p>{content}</p>',
      '<p >收件人</p>',
      '<p>{reciever}</p>'
    )
  }
];
这是候,我们在浏览器刷新页面,就会发现每一行数据前面都会有一个加号了,然后,点击那个加号就会出现一个展看详细信息了。添加了上述代码之后,效果图如下所示:
本例子的详细代码如下:
js代码:
//定义数据模型类
Ext.define("MsgModel", {
  extend: "Ext.data.Model",
  fields: [
    "id", "content", "reciever", "time"
  ]
}); //定义一个数据缓存Stroe类
Ext.define("MsgStore", {
  extend: "Ext.data.Store",
  model: "MsgModel",
  autoLoad: true,
  proxy: {
    type: 'ajax',
    url: 'msglist.json',
    reader: {
      type: 'json',
      root: 'data'
    }
  }
}); //定义视图类
Ext.define("MsgView", {
  extend: "Ext.grid.Panel",
  forceFit: true, //强制充满表格
  initComponent: function() {
    this.store = Ext.create("MsgStore");
    this.columns = [
      {
        text: "消息id",
        hidden: true,
        dataIndex: "id"
      },
      {
        text: "消息内容",
        flex: 10,
        dataIndex: "content"
      },
      {
        text: "接受人",
        flex: 10,
        dataIndex: "reciever"
      },
      {
        text: "发送日期",
        flex: 2,
        dataIndex: "time"
      },
      //删除按钮
      {
        xtype: "actioncolumn",
        flex: 1,
        header: "删除",
        itemId: "delete",
        align: "center",
        items: [
          {
            iconCls: "delete",
            handler: function(grid, rowIndex, colIndex) {
               //这里面实现删除的相关操作
            }
          }
        ]
      }
  ];   //使用RowExpander
  this.plugins = [
    {
      ptype: 'rowexpander',
      rowBodyTpl : new Ext.XTemplate(
        '<p >信息详情</p>',
        '<p>{content}</p>',
        '<p >收件人</p>',
        '<p>{reciever}</p>'
      )
    }
  ];   //固定菜单栏
  this.dockedItems = [
    {
      xtype: "toolbar",
      dock: "top",
      defaults: {
        labelWidth: 20
      },
      items: [
        {
          xtype: "label",
          text: "时间范围:",
          margin: "0 10"
        },
        {
          xtype: "datefield",
          format: "Y-m-d",
          emptyText: "日期格式:xxxx-xx-xx",
          fieldLabel: "从",
          itemId: "beginTime"
        },
        {
          xtype: "datefield",
          format: "Y-m-d",
          emptyText: "日期格式:xxxx-xx-xx",
          fieldLabel: "到",
          itemId: "endTime"
        },
        {
         xtype: "button",
          iconCls: "key_go",
          text: "查询",
          itemId: "query"
        }
      ]
    },     //分页工具
    {
      xtype: 'pagingtoolbar',
      itemId: "paging",
      store: this.store, // same store GridPanel is using
      dock: 'bottom',
      displayInfo: true
    }
  ];
  this.callParent(arguments);
} }); //实例化视图类
Ext.create("MsgView", {
  renderTo: Ext.getBody();
})
msglist.json文件内容如下:
{
  "data": [
    {
      "id": "1",
      "content": "三是要提醒广大学生要自觉遵守国家的法律法规和学校的各项规章制度,放假期间不得将校外人员带入校内游玩、住宿,不参与赌博、传销、邪教以及其它违纪违法活动,不参与有损学生形象的事,积极参加健康有益的社会公益活动。四是在假期教育学生不要自己燃放烟花,加强学生的消防安全教育",
      "reciever": "张三,李四,王五,赵六,小明,小红,小张,小黄,小等,小李,小杨,小不点,小姨",
      "time": "2015-10-20"
    },
    {
      "id": "2",
      "content": "一年级、二年级考试上午半天,于10:40结束考试,请各位家长10:50准时到校接孩子回家。三、四、五、六年级全天考试,上午11:30放学,下午3:50放学,有接孩子的家长请准时到校接孩子回家。",
      "reciever": "张三,李四,王五,赵六",
      "time": "2015-10-20"
    },
    {
      "id": "3",
      "content": "各年级学生在1月14、15号考试结束,就已经开始了假期,请家长在家中看护好自己的孩子,做好学生的安全教育:",
      "reciever": "张三,李四,王五,赵六",
      "time": "2015-10-20"
    },
    {
      "id": "4",
      "content": "注意:返校取通知书的时间是2013年1月18号上午8点,学校9点召开校会、9点30分学生离校(请各位家长注意及时接孩子回家)。",
      "reciever": "张三,李四,王五,赵六",
      "time": "2015-10-20"
    },
    {
      "id": "5",
      "content": "一是提醒学生要注意交通安全,防止发生交通事故。二是提醒学生外出参观旅游、探亲访友时,做好自身安全及防盗、骗、抢劫等恶性事件的发生,且不可乘坐三无、超载车辆。",
      "reciever": "张三,李四,王五,赵六",
      "time": "2015-10-20"
    }
  ]
}

Ext.grid.plugin.RowExpander的简单用法的更多相关文章

  1. Ext JS4百强应用: 用grid.plugin.CellEditing做高级查询 --第10强

    Ext JS4,用grid.plugin.CellEditing做高级查询: 写了90%,界面出来了,小兴奋就贴出来,还有细节要调整,基本能用. 代码: Ext.define('chenghao.ad ...

  2. Ext.Net学习笔记19:Ext.Net FormPanel 简单用法

    Ext.Net学习笔记19:Ext.Net FormPanel 简单用法 FormPanel是一个常用的控件,Ext.Net中的FormPanel控件同样具有非常丰富的功能,在接下来的笔记中我们将一起 ...

  3. Ext.grid rowexpander的展开与收缩

    这里写Ext.grid.Panel的展开与收缩. 1. 确保在grid存在rowexpander对象: plugins: [{ ptype: 'rowexpander', rowBodyTpl: [' ...

  4. ext grid 子表格

    Ext.define('app.view.main.biz.customer.receipt.followup.FollowUpActionPanel', { extend: 'Ext.grid.Pa ...

  5. Ext4.0.7使用Ext.grid.ColumnModel报错:TypeError: Ext.grid.Model is not a constructor

    代码如下: Ext.onReady(function(){ //定义列 var cm = new Ext.grid.ColumnModel([ {header: '编号', dataIndex: 'i ...

  6. 导出Ext.grid.Panel到excel

    1.客户端定义,基本的想法是form提交表格头定义,数据,以json方式传输 Ext.grid.Panel.addMembers({ exportExcel:function(options){ if ...

  7. EMCA和EMCTL的简单用法

    背景 其实这两个完全是两回事,不过倒是有关系,emca就是建立的资料库,建立后就用emctl来管理服务了.oem有问题基本都是重建emca,然后用emctl来操作. 当时用emca感觉真是一阵空白,太 ...

  8. [Extjs] Ext4 Ext.grid.Panel 分页实现(mybatis 分页插件-PageHelper 使用)

    先看图: 页面js代码: var userStore=Ext.create('Ext.data.Store', { storeId:'userStore', fields:['uname', 'ema ...

  9. 获取 ext grid 选中行 对象

    在ext grid 中如何确定选中行?如何获取选中行数据? 其实很简单,用到了Ext.getCmp('id'),他可以获取到指定id的对象. grid 获取行对象: var row = Ext.get ...

随机推荐

  1. UVALive - 6952 Cent Savings dp

    题目链接: http://acm.hust.edu.cn/vjudge/problem/116998 Cent Savings Time Limit: 3000MS 问题描述 To host a re ...

  2. IOS CoreData 多表查询demo解析

    在IOS CoreData中,多表查询上相对来说,没有SQL直观,但CoreData的功能还是可以完成相关操作的. 下面使用CoreData进行关系数据库的表与表之间的关系演示.生成CoreData和 ...

  3. Codeforces Round #204 (Div. 2)->B. Jeff and Periods

    B. Jeff and Periods time limit per test 1 second memory limit per test 256 megabytes input standard ...

  4. 《深入浅出JavaScript》

    第一章JS入门 第二章数据和判定常用的转义序列\b 回退 \f换页 \n换行 \r回车 \t制表符 \'单引 \"双引 \\反斜乘除求余的优先级相同,从左向右执行string对象indexO ...

  5. no module named firefly.master.master

    因为没有安装firefly python setup.py install

  6. no module named staticfiles

    原地址:http://blog.sina.com.cn/s/blog_77500e110100umms.html 今天想试一下django的Uploadify,找了个例子,运行时出错:myprojec ...

  7. 设置VMWARE通过桥接方式使用主机无线网卡上网

    原文:http://www.cnblogs.com/liongis/p/3265458.html 环境:WIN7旗舰版,台式机,U盘无线上网卡. 虚拟软件:VMware9.0,虚拟系统:CentOS6 ...

  8. Ruby Profiler 详解之 ruby-prof(I)

    项目地址: ruby-prof 在上一篇 Ruby 中的 Profiling 工具中,我们列举了几种最常用的 Profiler,不过只是简单介绍,这一次详细介绍一下 ruby-prof 的使用方法. ...

  9. ZJU 1180 Self Numbers(暴力模拟判断,水题)

    题目链接 同HDU 1128 , POJ 1316(这个范围小一点). 原本怕超时,以为有技巧或者规律,死命的想,后来发现这就是一道水体,模拟着全部判断一下就好了,10秒呢,完全不怕超时...唔,废话 ...

  10. 判断一个字符串在至多删除k个字符后是否为回文串

    转自: http://www.careercup.com/question?id=6287528252407808 问题描述: A k-palindrome is a string which tra ...