Ext.namespace('Shipping'); Shipping.MsCodeRailwayTrackingEdit = function (config) { Ext.applyIf(this, config); this.initUIComponents(); window.Shipping.MsCodeRailwayTrackingEdit.superclass.constructor.call(this); }; Ext.extend(Shipping.MsCodeRailwayTrackingEdit, Ext.Panel, { ParentWin: null, OpStatus: 'add', StoreList: null, EditRecord: null, initUIComponents: function () { this.serialNo = 0; this.workSerialNo = 0; this.bodyDel = []; //#region 编辑form //枚举参照相关(编辑form) //表参照相关(编辑form) //#endregion //#region 按钮Toolbar this.panelBtn = new Ext.Panel({ region: "north", tbar: [{ text: '增加明细', tooltip: '增加明细', iconCls: "btnadddetail", handler: function (button, event) { this.onAddDetailClick(button, event, 1); }, scope: this }, '-', { text: '删除明细', tooltip: '删除明细', iconCls: "btndeletedetail", handler: function (button, event) { this.onDelDetailClick(button, event, 1); }, scope: this },{ text: "保存", iconCls: "btnsave", handler: function (button, event) { this.Save('0'); }, scope: this } ] }); //end 按钮Toolbar //#endregion //#region 明细表 //明细表表格相关 //明细表-数据集 this.storeBodyList = Ext.create('Ext.data.Store', { model: 'MsCodeRailwayTracking', remoteSort: true, proxy: { type: 'ajax', url: '/MvcShipping/MsOpRailway/GetCodeTrackingList', reader: { root: 'data', totalProperty: 'totalCount' } } }); //明细表表格 this.gridListCellEditing = Ext.create('Ext.grid.plugin.CellEditing', { clicksToEdit: 1 }); this.gridList = new Ext.grid.GridPanel({ store: this.storeBodyList, enableHdMenu: false, region: 'center', loadMask: { msg: "数据加载中,请稍等..." }, trackMouseOver: true, disableSelection: false, plugins: [this.gridListCellEditing], selType: 'cellmodel', columns: [{ sortable: true, dataIndex: 'GID', header: 'GID', hidden: true, width: 100 }, { sortable: true, dataIndex: 'TRACKINGCODE', header: '运踪代码', editor: { xtype: 'textfield', selectOnFocus: true, enableKeyEvents: true }, width: 250 }, { sortable: true, dataIndex: 'REMARK', header: '说明', editor: { xtype: 'textfield', selectOnFocus: true, enableKeyEvents: true }, width: 250 } ] }); //#endregion 明细表 //#region 布局 //控件布局 this.panelTop = new Ext.Panel({ layout: "border", region: "north", height: 40, items: [this.panelBtn] }); Ext.apply(this, { items: [this.panelTop, this.gridList] }); //#endregion //初始化数据 this.storeBodyList.load({ params: { condition: ""} }); //绑定事件 this.gridList.on('edit', function (editor, e, eOpts) { this.gridAfterEdit(editor, e, eOpts); }, this); }, //end initUIComponents Save: function (type) { //判断表格数据是否合法 if (!validateEditorGridPanel(this.gridList)) { return; } var bodydatas = []; for (var i = 0; i < this.storeBodyList.getCount(); i += 1) { var member = this.storeBodyList.getAt(i); bodydatas.push(member); } var jsonBody = ConvertRecordsToJsonAll(bodydatas); Ext.Msg.wait('正在保存数据, 请稍侯..'); Ext.Ajax.request({ waitMsg: '正在保存数据...', url: '/MvcShipping/MsOpRailway/SaveCodeTracking', scope: this, params: { body: jsonBody }, callback: function (options, success, response) { if (success) { Ext.MessageBox.hide(); var jsonresult = Ext.JSON.decode(response.responseText); if (jsonresult.Success) { for (var j = 0; j < this.storeBodyList.getCount(); j += 1) { var memberbody = this.storeBodyList.getAt(j); memberbody.commit(); }; } else { Ext.Msg.show({ title: '错误', msg: jsonresult.Message, icon: Ext.Msg.ERROR, buttons: Ext.Msg.OK }); } } else { Ext.Msg.show({ title: '请重试', msg: '服务器响应出错', icon: Ext.Msg.ERROR, buttons: Ext.Msg.OK }); } } }); }, //end save onAddDetailClick: function (button, event, type) { this.addDetail(type); }, //end onAddDetailClick onDelDetailClick: function (button, event, type) { this.deleteDetail(type); }, //onDelDetailClick gridAfterEdit: function (editor, e, eOpts) { //需要自己实现里面的事件 // this.storeCustType }, addDetail: function (type) { var newSerialno = 0; store = this.storeBodyList; var record = Ext.create('MsCodeRailwayTracking', { GID: '', TRACKINGCODE: '', REMARK: "" }); store.add(record); var n = this.storeBodyList.getCount(); this.gridListCellEditing.startEditByPosition({ row: n - 1, column: 1 }); }, deleteDetail: function (type) { var selectedRecords = this.gridList.selModel.getSelection(); for (var i = 0; i < selectedRecords.length; i++) { var rec = selectedRecords[i]; this.storeBodyList.remove(rec); } } });