GridPanel.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. Ext.define('erp.view.common.batchDeal.GridPanel',{
  2. extend: 'Ext.grid.Panel',
  3. alias: 'widget.erpBatchDealGridPanel',
  4. id: 'batchDealGridPanel',
  5. emptyText : $I18N.common.grid.emptyText,
  6. columnLines : true,
  7. autoScroll : true,
  8. multiselected: [],
  9. store: [],
  10. columns: [],
  11. bodyStyle:'background-color:#f1f1f1;',
  12. GridUtil: Ext.create('erp.util.GridUtil'),
  13. BaseUtil: Ext.create('erp.util.BaseUtil'),
  14. plugins: Ext.create('Ext.grid.plugin.CellEditing', {
  15. clicksToEdit: 1
  16. }),
  17. features : [Ext.create('Ext.grid.feature.Grouping',{
  18. //startCollapsed: true,
  19. hideGroupedHeader: true,
  20. groupHeaderTpl: '{name} (Count:{rows.length})'
  21. }),{
  22. ftype : 'summary',
  23. showSummaryRow : false,//不显示默认合计行
  24. generateSummaryData: function(){
  25. var me = this,
  26. data = {},
  27. store = me.view.store,
  28. columns = me.view.headerCt.getColumnsForTpl(),
  29. i = 0,
  30. length = columns.length,
  31. //fieldData,
  32. //key,
  33. comp;
  34. //将feature的data打印在toolbar上面
  35. for (i = 0, length = columns.length; i < length; ++i) {
  36. comp = Ext.getCmp(columns[i].id);
  37. data[comp.id] = me.getSummary(store, comp.summaryType, comp.dataIndex, false);
  38. var tb = Ext.getCmp(columns[i].dataIndex + '_' + comp.summaryType);
  39. if(tb){
  40. tb.setText(tb.text.split(':')[0] + ':' + data[comp.id]);
  41. }
  42. }
  43. return data;
  44. }
  45. }],
  46. selModel: Ext.create('Ext.selection.CheckboxModel',{
  47. ignoreRightMouseSelection : false,
  48. listeners:{
  49. selectionchange:function(selectionModel, selected, options){
  50. }
  51. },
  52. getEditor: function(){
  53. return null;
  54. },
  55. onRowMouseDown: function(view, record, item, index, e) {//改写的onRowMouseDown方法
  56. var me = Ext.getCmp('batchDealGridPanel');
  57. var bool = true;
  58. var items = me.selModel.getSelection();
  59. Ext.each(items, function(item, index){
  60. if(this.index == record.index){
  61. bool = false;
  62. me.selModel.deselect(record);
  63. Ext.Array.remove(items, item);
  64. Ext.Array.remove(me.multiselected, record);
  65. }
  66. });
  67. Ext.each(me.multiselected, function(item, index){
  68. items.push(item);
  69. });
  70. me.selModel.select(items);
  71. if(bool){
  72. view.el.focus();
  73. var checkbox = item.childNodes[0].childNodes[0].childNodes[0];
  74. if(checkbox.getAttribute('class') == 'x-grid-row-checker'){
  75. //checkbox.setAttribute('class','x-grid-row-checker-checked');//只是修改了其样式,并没有将record加到selModel里面
  76. me.multiselected.push(record);
  77. items.push(record);
  78. me.selModel.select(items);
  79. } else {
  80. me.selModel.deselect(record);
  81. Ext.Array.remove(me.multiselected, record);
  82. //checkbox.setAttribute('class','x-grid-row-checker');
  83. }
  84. }
  85. },
  86. onHeaderClick: function(headerCt, header, e) {
  87. if (header.isCheckerHd) {
  88. e.stopEvent();
  89. var isChecked = header.el.hasCls(Ext.baseCSSPrefix + 'grid-hd-checker-on');
  90. if (isChecked) {
  91. this.deselectAll(true);
  92. var grid = Ext.getCmp('batchDealGridPanel');
  93. this.deselect(grid.multiselected);
  94. grid.multiselected = new Array();
  95. var els = Ext.select('div[@class=x-grid-row-checker-checked]').elements;
  96. Ext.each(els, function(el, index){
  97. el.setAttribute('class','x-grid-row-checker');
  98. });
  99. header.el.removeCls(Ext.baseCSSPrefix + 'grid-hd-checker-on');//添加这个
  100. } else {
  101. var grid = Ext.getCmp('batchDealGridPanel');
  102. this.deselect(grid.multiselected);
  103. grid.multiselected = new Array();
  104. var els = Ext.select('div[@class=x-grid-row-checker-checked]').elements;
  105. Ext.each(els, function(el, index){
  106. el.setAttribute('class','x-grid-row-checker');
  107. });
  108. this.selectAll(true);
  109. header.el.addCls(Ext.baseCSSPrefix + 'grid-hd-checker-on');//添加这个
  110. }
  111. }
  112. }
  113. }),
  114. initComponent : function(){
  115. var gridParam = {caller: caller, condition: ''};
  116. this.GridUtil.getGridColumnsAndStore(this, 'common/singleGridPanel.action?', gridParam, "");
  117. this.callParent(arguments);
  118. }
  119. });