有时候,我们在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. Spring MVC mapping[From Spring MVC Beginner's Guide]

    In a Spring MVC application, the URL can logically be divided into five parts (see the following fig ...

  2. Codeforces Round #FF (Div. 1) A. DZY Loves Sequences

    题目链接: http://www.codeforces.com/contest/446/problem/A 题解: dp1[x]表示以x结尾的最大严格升序连续串,dp2[x]表示以x开头的最大严格升序 ...

  3. Matlab中diag函数注意事项

    在给李X写SVD代码的时候注意到的. >> a = magic(3) a = 8 1 6 3 5 7 4 9 2 >> diag(a) ans = 8 5 2 >> ...

  4. livevent的几个问题

    关于libevent的几个问题 1.他到底是如何保证这个套接字有效的 主线程去断开关闭套接字,主线程去调用buffwrite,在子线程收到客户端断开时,主线程延迟1分钟释放,这样保证子线程操作完该so ...

  5. Silverlight编程模型

    Silverlight支持Javascript API编程模型和托管API编程模型这两种编程模型,它们的基本作用都是用于XAML界面文件中的XAML对象,基于托管API编程的XAML应用程序是通过x: ...

  6. 手写PE文件(一)

    DOS Header(IMAGE_DOS_HEADER)->64 Byte DOS头部 DOS Stub 112字节 "PE"00(Signature) 4个字节 IMAGE ...

  7. IT主要在线学习网站

    大的模式来说,目前做编程学习网站的大概有两种.一种是视频模式,如优才,麦可,开课吧等,一种是非视频模式如计蒜客(泡面吧),实验楼和他们汇智网等.其中多数产品的创新也都是在“视频+交互式学习”模式上.要 ...

  8. HDU 2048 神、上帝以及老天爷(递归,错排,dp,概率)

    中文题,错排,求概率,不解释,核心思路同 HDU 1465 错排简单思路可看:http://www.cnblogs.com/laiba2004/p/3235934.html //错排,但是我之前叫了几 ...

  9. POJ 2513 Colored Sticks (离散化+并查集+欧拉通路)

    下面两个写得很清楚了,就不在赘述. http://blog.sina.com.cn/s/blog_5cd4cccf0100apd1.htmlhttp://www.cnblogs.com/lyy2890 ...

  10. android:scaleType属性

    android:scaleType是控制图片如何resized/moved来匹对ImageView的size. ImageView.ScaleType / android:scaleType值的意义区 ...