ExtJS 3.3 GroupingStore GroupingView 一点点扩展
2012-07-25 22:34
113 查看
首先是想要不显示分组header的分组GridPanel, 试过一位阿三哥的插件, 但效果不太理想, summary栏在最下, 并不是紧跟着数据, 而且不随水平滚动条滚动, 地址如下:
http://www.rahulsingla.com/blog/2010/04/ext-net-extjs-gridpanel-columns-summary-plugin-(without-grouping)
后来转变思路, 只要隐藏分组的header就行了, 不过GroupingStore在重新加载了数据之后, 需要再调用一次, 因此在load事件里调用,
后来发现写在GroupingView的refresh事件里面才是最合适的, 因为点列标题排序的话不会触发GroupingStore的load事件
之后是发现GroupingStore和GroupingView里面貌似没有提供按groupField分组后的组数, 和值数组, 于是根据分组后, groupField的值是排序的规律, 写了2个简单的方法
http://www.rahulsingla.com/blog/2010/04/ext-net-extjs-gridpanel-columns-summary-plugin-(without-grouping)
后来转变思路, 只要隐藏分组的header就行了, 不过GroupingStore在重新加载了数据之后, 需要再调用一次, 因此在load事件里调用,
后来发现写在GroupingView的refresh事件里面才是最合适的, 因为点列标题排序的话不会触发GroupingStore的load事件
Ext.override(Ext.grid.GroupingView, { setGroupHeaderVisible: function(visible, grid, headerClass){ if(headerClass == undefined || headerClass == "" || headerClass == null){ headerClass = "x-grid-group-hd"; } var headerDiv; if(grid){ headerDiv = Ext.query("div." + headerClass, grid); }else{ headerDiv = Ext.query("div." + headerClass); } Ext.each(headerDiv, function(domElement, index, allItems){ Ext.get(domElement).setVisibilityMode(Ext.Element.DISPLAY).setVisible(visible); }); } });
之后是发现GroupingStore和GroupingView里面貌似没有提供按groupField分组后的组数, 和值数组, 于是根据分组后, groupField的值是排序的规律, 写了2个简单的方法
Ext.override(Ext.data.GroupingStore, { /* 给GroupingStore添加获取当前分组组数的功能*/ getGroupCount: function(){ var groupCount = 0; var groupFieldValueBuffer = undefined; var groupField = this.groupField; for(var i = 0; i < this.getCount(); i ++){ //如果当前Record里没有groupField对应的值, 会取fields类型的默认值 var currentGroupFieldValue = this.getAt(i).get(groupField); if(groupFieldValueBuffer == undefined){ groupFieldValueBuffer = currentGroupFieldValue; groupCount ++; }else if(groupFieldValueBuffer != currentGroupFieldValue){ groupCount ++; } } return groupCount; }, getGroupFieldValues: function(){ var groupCount = 0; var groupFieldValues = new Array(); var groupFieldValueBuffer = undefined; var groupField = this.groupField; for(var i = 0; i < this.getCount(); i ++){ var currentGroupFieldValue = this.getAt(i).get(groupField); if(groupFieldValueBuffer == undefined){ groupFieldValueBuffer = currentGroupFieldValue; groupFieldValues[groupCount] = currentGroupFieldValue; groupCount ++; }else if(groupFieldValueBuffer != currentGroupFieldValue){ groupFieldValues[groupCount] = currentGroupFieldValue; groupCount ++; } } return groupFieldValues; } });
相关文章推荐
- EXTJS 4 MVC模式VIEW中searchfield指定store无效的问题me.store.proxy is undefined
- extjs GroupingStore sort 的疑问
- extjs中子组件使用父组件的viewModel中的store
- ExtJs MVC架构中不同的View实例使用不同的Store实例
- groupingstore extjs
- ExtJS中GroupingStore的使用
- ExtJs数据分组(GroupingView)
- Extjs3.3日期控件的扩展,选择时分秒
- ExtJs Grid GroupingView 单击分组标题不展开子项目1
- ExtJs Grid GroupingView 单击分组标题不展开子项目2
- ExtJs Grid GroupingView 单击分组标题不展开子项目3
- Extjs 简单扩展 Component 实现点击刷新的验证码。
- ExtJs Ext.form.field.TextArea+Ckeditor 扩展富文本编辑器
- ExtJs.Store.load()各参数含义解析
- Oracle的3种扩展用法ollup、cube、grouping sets.
- 对Extjs中store的多种操作
- IOS View扩展简便frame操作
- DataGridView之扩展控件DataViewExtendion
- ExtJS的store.sync向Asp.net MVC的Action提交时引发System.Reflection.AmbiguousMatchException异常
- ExtJs之Ext.data.Store