有时候,我们在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. SQL Server性能优化(1)使用SET函数

    在一切开始之前,先看下微软的建议:在系统的整体性能优化里面, TSQL优化优先级并不是最高的. 本文包括四部分: SET STATISTICS TIME ON SET STATISTICS IO SE ...

  2. SD 销售订单的BADI增强SD_BADI_PRICE_CHECK

    METHOD if_ex_badi_sd_sales~save_document.* CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'* EXPORTING* titel = ...

  3. WKWebView 与 UIWebView

    apple和google为webkit该浏览器引擎的发扬光大做出了重要贡献,在WWDC 2014发布会上发布iOS 8中,apple公布了WebKit框架,这意味着OSX和IOS开发者将共用同样的开发 ...

  4. 【bzoj1011】[HNOI2008]遥远的行星

    1011: [HNOI2008]遥远的行星 Time Limit: 10 Sec  Memory Limit: 162 MBSec  Special JudgeSubmit: 3711  Solved ...

  5. unity android 集成指南

    原地址:http://blog.csdn.net/alking_sun/article/details/36175187 1.安卓层开发并暴露接口.   launcher activity(以下称为U ...

  6. Swift 2.0 到底「新」在哪?

    [编者按]2015年6月,一年一度的苹果 WWDC 大会如期而至,在大会上苹果发布了 Swift 2.0,引入了很多新的特性,以帮助开发者更快.更简单地构建应用.本篇文章作者是 Maxime defa ...

  7. Appium下Android keyevent整理

    keycode 3:首页(Home key) keycode 4:返回键(Back key) keycode 5:电话键(Call key) keycode 6:结束通话键(End Call key) ...

  8. SPOJ375 Query on a tree(LCT边权)

    之前做了两道点权的LCT,这次做一下边权的LCT.上网找了一下资料,发现对于边权的LCT有这么两种处理方法,一种是每条边建一个点,于是边权就转成点权了.另外一种则是每个边权对应到点权上,也就是每个点对 ...

  9. PHP一些函数

     函数不定参数: func_num_args // 获得参数个数 func_get_args // 获得参数数组 call_user_func('function_name', $parameter) ...

  10. iOS文件操作

      ];                   NSString *plistPath = [filePath stringByAppendingPathComponent:@"collect ...