对Extjs的grid使用,有时候单单使用其中的某些组、或某些行是远远不够的,还需要对行进行一些扩展,如:与filters相似的row扩展控件,如下

这个控件,我也是从网上找的小例子,按照其内部的某些方法,结合自己的工程,应用到相应的文件中,其使用过程还算简单。一般的扩展只需要在行的内部添加些文字或者图片就可以了,我在使用的时候,在行的内部又嵌套了一个grid,达到了多级显示数据的效果,具体界面如下:

外面一层是一个groupGrid,内部为其行添加扩展控件内部嵌套grid,这样看起来很适合多级数据的显示

//首先在grid内添加插件,形式上是,作为grid内部的一个属性
plugins: expander,
//添加expander,其实这种方法使用起来很简单
var expander = new Ext.grid.RowExpander
({
tpl: new Ext.Template('<div class="detailData"></div>')
});//定义控件 //添加进columnModel内
this._columnModel = new Ipms.expertApplys.ExpertApplyAdjustApplyItemGroupGridPanel_ColumnModel(expander, this._selections);
//这个时候页面内部在行的前面会显示'+'号, //之后点击‘+’号添加希望显示的内容,即调用.on定义的expand事件
expander.on("expand", function (expander, r, body, rowIndex) {
this._rowPanel = new Ipms.expertApplys.ExpertApplyAdjustApplyItemGroupGridPanel_RowPanel('ConstructTaskItemsForApplyItemGrid
Panel', '', expander, r, body, rowIndex);
});
//在这里新建了一个gridpanel,将需要的参数传进去,获得相应的数据,
下面是具体的Panel定义,需要注意的只是其中的一个render,就可以获取确定的数据 Ipms.expertApplys.ExpertApplyAdjustApplyItemGroupGridPanel_RowPanel = function (panelId, title, expander, r, body, rowIndex) { var applyItemID = r.data.id;
var constructTaskItemStore = new Ipms.expertApplys.ExpertApplyAdjustStore(Ipms.service.off.Service + '/Query', {
applyItemID: applyItemID }); this._view = new Ext.grid.GridView({
forceFit: true,
ignoreAdd: true,
emptyText: '没有满足条件的条目'
}); var store = constructTaskItemStore;
this._selections = new Ext.grid.CheckboxSelectionModel();
this._columnModel = new Ipms.expertApplys.ExpertApplyAdjustApplyItemGroupGridPanel_ChildGridPanel_ColumnModel(this._selections, false); Ipms.expertApplys.ExpertApplyAdjustApplyItemGroupGridPanel_RowPanel.superclass.constructor.call(this, {
id: panelId,
store: store,
title: title,
cm: this._columnModel,
clicksToEdit: ,
autoExpandColumn: true,
enableColumnHide: true,
enableColumnMove: true,
stateful: true,
sm: this._selections,
renderTo: Ext.DomQuery.select("div.detailData", body)[],//最重要的一行,跟上面定义的detailData呼应,将内容渲染到定义了class的当前层。
viewConfig: {
forceFit: true,
emptyText: '没有满足条件的条目'
},
view: this._view,
autoWidth: true,
autoHeight: true
});
constructTaskItemStore.load();
}
Ext.extend(Ipms.expertApplys.ExpertApplyAdjustApplyItemGroupGridPanel_RowPanel, Ext.grid.EditorGridPanel);

至此,内部嵌套着grid的扩展行已经制作完毕,然而当选择外部某一行的时候会默认将内部grid的checkbox选中,但是虽然内部行已经打上“勾”,实际上内部行的选择值却是false,那么就需要取消外部选择行的事件,这时只需添加这样一行,就可以去除行选择的所有事件:

    this._selections.handleMouseDown = Ext.emptyFn; //不响应MouseDown事件

如果需要,添加其他的事件,则自己动手写就可以了,对应事件分别如下:

 sm.on('rowselect',function(sm_,rowIndex,record){//行选中的时候    ,sm定义的是selectModel
}, this);
sm.on('rowdeselect',function(sm_,rowIndex,record){//行未选中的时候
}, this);

Extjs的GridPanel的RowExpander的扩展的更多相关文章

  1. 给Extjs的GridPanel增加“合计”行(转)

    再Google,找到一个看似写的比较好的 http://www.cnblogs.com/over140/archive/2009/05/06/1449892.html 期间主要部分也是借鉴官方论坛上的 ...

  2. (Extjs)对于GridPanel的各种操作

    刚才做了个有点特殊的需求,在某窗口关闭时,要把Gridpanel中的选择行清空,因为如果不清空,直接双击,就不能即时更新出来我想要的内容. 答案是:Grid.getSelectionModel().c ...

  3. Extjs中GridPanel的各个属性与方法

    1.Ext.grid.GridPanel 主要配置项: store:表格的数据集 columns:表格列模式的配置数组,可自动创建ColumnModel列模式 autoExpandColumn:自动充 ...

  4. Extjs的GridPanel分页前后台完整代码实例

    第一次写文章啊,有些冲动.最近在公司学习Extjs,做了一个分页的小实例和大家分享. 1.首先编写paging-grid.js文件,这是我在网上参考的例子改写的,大同小异. Ext.onReady(f ...

  5. ExtJS:GridPanel之renderer:function()和itemdblclick : function()方法参数详解

    要使用GridPanel,首先要定义Store,而在创建Store的时候必须要有Model,因此我们首先来定义Model: Ext.define("Gpsdata", { exte ...

  6. ExtJs之gridPanel的属性表格,编辑表格,表格分页,分组等技巧

    这里藏的配置确实多.. 慢慢实践吧. <!DOCTYPE html> <html> <head> <title>ExtJs</title> ...

  7. ExtJs中gridpanel分组后组名排序

    /** * 定义降序的groupingStore */ var DescGroupingStore = Ext.extend(Ext.data.GroupingStore, { groupDir : ...

  8. ExtJs 设置GridPanel表格文本垂直居中

    业务场景,需要实现最终效果图如下: GridPanel代码如下配置: { xtype : 'grid', id : 'grid_jglb', frame : true, region : 'cente ...

  9. Extjs, 使用GridPanel出现 Layout run failed

    当GridPanel被加入到容器,且容器的layout为vbox时候, 会出现 Layout run failed 后者GridPanel的尺寸没有撑满父容器 网上找到的解决的方法是.要给父容器设置一 ...

随机推荐

  1. [转载:]Fortran 二进制文件读写

    一些朋友总是咨询关于二进制文件的读写和转化.这里就我自己的理解说一说. 一).一般问题 二进制文件与我们通常使用的文本文件储存方式有根本的不同.这样的不同很难用言语表达,自己亲自看一看,理解起来会容易 ...

  2. 【转载】OpenGL ES 三种类型修饰 uniform attribute varying

    其实attribute varying已经被in和out代替了,但是有些工程代码里面仍然还在,所以权当笔记好了. 1.uniform变量uniform变量是外部application程序传递给(ver ...

  3. Scala class的构造方法与继承

    有java背景的人,很清楚java是如何定义构造方法以及继承的.在scala里面,继承和java有些相似.但是构造方法的定义,就不大一样了,应该说是差别还是很大的.在java里面,定义构造方法,就是定 ...

  4. PHP的轻量消息队列php-resque使用说明

    日志未经声明,均为AlloVince原创.版权采用『 知识共享署名-非商业性使用 2.5 许可协议』进行许可. 消息队列处理后台任务带来的问题 项目中经常会有后台运行任务的需求,比如发送邮件时,因为要 ...

  5. spark hive 结合处理 把多行变成多列

    原数据格式 : gid       id      score a1        1       90 a1        2      80 a1       3      79 a1       ...

  6. HDU 5183 Negative and Positive (NP) ——(后缀和+手写hash表)

    根据奇偶开两个hash表来记录后缀和.注意set会被卡,要手写hash表. 具体见代码: #include <stdio.h> #include <algorithm> #in ...

  7. 查看真机的APP沙盒文件

    1.Xcode --> window --> devices -->左边选择设备 右下边选择要查看的app 双击应用可查看目录 点击设置按钮,选 Download Container ...

  8. DIOCP之DEMO-登陆验证设计(二)

    ECHOServer代码(不考虑粘包的处理): unit ufrmMain; interface uses Windows, Messages, SysUtils, Variants, Classes ...

  9. 【Python全栈笔记】00 12-14 Oct Linux 和 Python 基础

    Linux 基础认识 更加稳定,安全,开源 设置好ssh协议后可以通过windows系统连接Linux,基于ssh协议进行通信 '/' 为根目录 cd / -> 切换到根目录 ls -lh 列出 ...

  10. 四则运算(Android)版

    实验题目: 将小学四则运算整合成网页版或者是Android版.实现有无余数,减法有无负数.... 设计思路: 由于学到的基础知识不足,只能设计简单的加减乘除,界面设计简单,代码量少,只是达到了入门级的 ...