|
|
@@ -22,9 +22,16 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
|
|
|
},
|
|
|
|
|
|
|
|
|
- store: {
|
|
|
- data: []
|
|
|
- },
|
|
|
+ store: Ext.create('Ext.data.Store', {
|
|
|
+ fields: ['id', 'pdTaxtotal', 'pdTotal'],
|
|
|
+ data: [{
|
|
|
+ id: '40',
|
|
|
+ pdTaxtotal: 30
|
|
|
+ }, {
|
|
|
+ id: '60',
|
|
|
+ pdTotal: 79
|
|
|
+ }]
|
|
|
+ }),
|
|
|
|
|
|
showIndex: true,
|
|
|
configUrl: '',
|
|
|
@@ -37,16 +44,16 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
|
|
|
dock: 'bottom',
|
|
|
items: [{
|
|
|
iconCls: 'x-fa fa-plus-circle',
|
|
|
- handler: me.addDetail
|
|
|
+ handler: 'addDetail'
|
|
|
}, {
|
|
|
iconCls: 'x-fa fa-trash',
|
|
|
- handler: me.deleteDetail
|
|
|
+ handler: 'deleteDetail'
|
|
|
}, {
|
|
|
iconCls: 'x-fa fa-arrow-up',
|
|
|
- handler: me.swapUp
|
|
|
+ handler: 'swapUp'
|
|
|
}, {
|
|
|
iconCls: 'x-fa fa-arrow-down',
|
|
|
- handler: me.swapDown
|
|
|
+ handler: 'swapDown'
|
|
|
}]
|
|
|
}]
|
|
|
});
|
|
|
@@ -56,58 +63,90 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
|
|
|
listeners: {
|
|
|
afterrender: function(grid) {
|
|
|
if(grid.store.count()==0){
|
|
|
- grid.add10EmptyRow();
|
|
|
+ grid.getController().add10EmptyRow();
|
|
|
}
|
|
|
},
|
|
|
itemClick: function(tableView, record, item, index, e, eOpts) {
|
|
|
var grid = tableView.up('grid'),
|
|
|
- store = grid.store,
|
|
|
- count = store.getCount();
|
|
|
+ controller = grid.getController(),
|
|
|
+ store = grid.store,
|
|
|
+ count = store.getCount();
|
|
|
|
|
|
if(index == count - 1) {
|
|
|
- grid.add10EmptyRow();
|
|
|
+ controller.add10EmptyRow();
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
|
|
|
- add10EmptyRow: function() {
|
|
|
- var me = this,
|
|
|
- store = me.getStore(),
|
|
|
- selectedRecord = me.selModel.lastSelected,
|
|
|
- datas = [];
|
|
|
-
|
|
|
- Ext.Array.each(new Array(10), function() {
|
|
|
- datas.push({});
|
|
|
- })
|
|
|
- store.insert(store.indexOf(selectedRecord) + 1, datas);
|
|
|
- },
|
|
|
-
|
|
|
- addDetail: function() {
|
|
|
- var grid = this.up('grid'),
|
|
|
+ controller: Ext.create('Ext.app.ViewController', {
|
|
|
+ add10EmptyRow: function() {
|
|
|
+ var me = this,
|
|
|
+ grid = me.getView(),
|
|
|
+ store = grid.getStore(),
|
|
|
+ selectedRecord = grid.selModel.lastSelected,
|
|
|
+ datas = [];
|
|
|
+
|
|
|
+ Ext.Array.each(new Array(10), function() {
|
|
|
+ datas.push({});
|
|
|
+ })
|
|
|
+ store.insert(store.indexOf(selectedRecord) + 1, datas);
|
|
|
+ },
|
|
|
+
|
|
|
+ addDetail: function() {
|
|
|
+ var me = this,
|
|
|
+ grid = me.getView(),
|
|
|
store = grid.getStore(),
|
|
|
selectedRecord = grid.selModel.lastSelected;
|
|
|
-
|
|
|
- store.insert(store.indexOf(selectedRecord) + 1, {});
|
|
|
- },
|
|
|
-
|
|
|
- deleteDetail: function() {
|
|
|
- var grid = this.up('grid'),
|
|
|
+
|
|
|
+ store.insert(store.indexOf(selectedRecord) + 1, {});
|
|
|
+ },
|
|
|
+
|
|
|
+ deleteDetail: function() {
|
|
|
+ var me = this,
|
|
|
+ grid = me.getView(),
|
|
|
store = grid.getStore(),
|
|
|
selectedRecord = grid.selModel.lastSelected;
|
|
|
-
|
|
|
- store.remove(selectedRecord);
|
|
|
- },
|
|
|
-
|
|
|
- swapUp: function() {
|
|
|
- var grid = this.up('grid'),
|
|
|
+
|
|
|
+ store.remove(selectedRecord);
|
|
|
+ },
|
|
|
+
|
|
|
+ swapUp: function() {
|
|
|
+ var me = this,
|
|
|
+ grid = me.getView(),
|
|
|
store = grid.getStore(),
|
|
|
record = grid.selModel.lastSelected,
|
|
|
- selectedIdx = store.indexOf(record),
|
|
|
- to = store.getAt(selectedIdx - 1);
|
|
|
-
|
|
|
- },
|
|
|
-
|
|
|
- swapDown: function() {
|
|
|
-
|
|
|
- }
|
|
|
+ selectedIdx = store.indexOf(record);
|
|
|
+
|
|
|
+ me.swap(grid, record, selectedIdx, -1);
|
|
|
+ },
|
|
|
+
|
|
|
+ swapDown: function() {
|
|
|
+ var me = this,
|
|
|
+ grid = me.getView(),
|
|
|
+ store = grid.getStore(),
|
|
|
+ record = grid.selModel.lastSelected,
|
|
|
+ selectedIdx = store.indexOf(record);
|
|
|
+
|
|
|
+ me.swap(grid, record, selectedIdx, 1);
|
|
|
+ },
|
|
|
+
|
|
|
+ swap: function(grid, from, index, dir) {
|
|
|
+ var store = grid.getStore(),
|
|
|
+ to = store.getAt(index + dir);
|
|
|
+
|
|
|
+ if(from) {
|
|
|
+ var keys = grid.getColumns().map(function(c) { return c.dataIndex }),
|
|
|
+ data = from.getData(),
|
|
|
+ toData = to.getData();
|
|
|
+
|
|
|
+ Ext.each(keys, function(key, index) {
|
|
|
+ to.set(key, null);
|
|
|
+ from.set(key, toData[key]);
|
|
|
+ to.set(key, data[key]);
|
|
|
+ });
|
|
|
+ //聚焦目标行
|
|
|
+ grid.selModel.select(to);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }),
|
|
|
});
|