ResultGridPanel.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. Ext.define('erp.view.common.multiDbfind.ResultGridPanel',{
  2. extend: 'Ext.grid.Panel',
  3. alias: 'widget.erpResultDbfindGridPanel',
  4. layout : 'fit',
  5. hidden:true,
  6. id: 'dbfindresultgrid',
  7. emptyText : $I18N.common.grid.emptyText,
  8. columnLines : true,
  9. autoScroll : true,
  10. store: [],
  11. columns: [],
  12. selectAll:true,
  13. selectObject:new Object(),
  14. bbar:['->',{id:'count',xtype: 'tbtext',text: '共: 0 条, 已选: 0 条'}],
  15. selModel: Ext.create('Ext.selection.CheckboxModel',{
  16. ignoreRightMouseSelection : false,
  17. checkOnly: true,
  18. listeners:{
  19. selectionchange:function(selModel, selected, options){//表头全选、取消全选
  20. var grid=selModel.view.ownerCt;
  21. if(grid.selectAll){
  22. if(selected.length>0){//全选
  23. Ext.each(selected,function(select){
  24. grid.selectObject[Ext.JSON.encode(select.data)]=select.data;
  25. });
  26. }else{//取消全选
  27. var grid=selModel.view.ownerCt;
  28. Ext.each(grid.store.data.items,function(deselect){
  29. var key=Ext.JSON.encode(deselect.data);
  30. delete grid.selectObject[key];
  31. });
  32. }
  33. grid.updateInfo();
  34. }else{
  35. grid.selectAll=true;
  36. }
  37. },
  38. select:function(selModel, record, index, opts){//选中
  39. var grid=selModel.view.ownerCt;
  40. if(grid.selectAll){
  41. grid.selectObject[Ext.JSON.encode(record.data)]=record.data;
  42. grid.selectAll=false;
  43. }
  44. grid.updateInfo();
  45. },
  46. deselect:function(selModel, record, index, opts){//取消选中
  47. var grid=selModel.view.ownerCt;
  48. if(grid.selectAll){
  49. var key=Ext.JSON.encode(record.data);
  50. delete grid.selectObject[key];
  51. grid.selectAll=false;
  52. }
  53. grid.updateInfo();
  54. }
  55. }
  56. }),
  57. headerCt: Ext.create("Ext.grid.header.Container",{
  58. forceFit: false,
  59. sortable: true,
  60. enableColumnMove:true,
  61. enableColumnResize:true,
  62. enableColumnHide: true
  63. }),
  64. plugins: [Ext.create('Ext.ux.grid.GridHeaderFilters')],
  65. initComponent : function(){
  66. this.callParent(arguments);
  67. },
  68. updateInfo:function(){
  69. var grid=this;
  70. var count_all=grid.store.data.items.length;
  71. var count_select=grid.selModel.getSelection().length;
  72. var count = Ext.getCmp('count');
  73. if (count) count.setText('共: ' + count_all + ' 条, 已选: ' + count_select+ ' 条');
  74. },
  75. RenderUtil: Ext.create('erp.util.RenderUtil'),
  76. selectDefault:function(){
  77. var grid=this;
  78. var datachecked=new Array();
  79. Ext.each(Ext.Object.getKeys(grid.selectObject),function(k){
  80. datachecked.push(grid.selectObject[k]);
  81. });
  82. if(datachecked.length>0){
  83. var selectArr=new Array();
  84. Ext.each(grid.store.data.items, function(item){
  85. delete item.data.RN;
  86. Ext.each(datachecked,function(checked){
  87. var checkflag=true;
  88. var keys=Ext.Object.getKeys(item.data);
  89. for(var i=0;i<keys.length && checkflag;i++){
  90. var k=keys[i];
  91. if(item.data[k]!=checked[k]){
  92. checkflag=false;
  93. }
  94. if(i==keys.length-1&&checkflag){
  95. selectArr.push(item);
  96. }
  97. }
  98. });
  99. });
  100. grid.selectAll=false;
  101. grid.selModel.deselectAll();
  102. grid.selModel.select(selectArr);
  103. }
  104. },
  105. setDefaultColumns:function(fields,columns){
  106. Ext.Array.each(columns, function(column, y) {
  107. if(column.xtype='combocolumn'){
  108. column.xtype='';
  109. column.filter.xtype='textfield';
  110. }
  111. });
  112. this.reconfigure(Ext.create('Ext.data.Store', {
  113. fields: fields,
  114. data: [],
  115. listeners:{
  116. 'datachanged':function(){
  117. Ext.getCmp('dbfindresultgrid').selectDefault();
  118. }
  119. }
  120. }), columns);
  121. },
  122. listeners: {
  123. 'headerfiltersapply': function(grid, filters) {
  124. grid.selectAll=false;
  125. }
  126. }
  127. });