Extjs简单页面增加删除保存功能实现Demo
最近开发做了一个小的Demo。保存下写个心得。以后方便查看使用。
画界面:

Extjs画页面:
GroupDetailsList = Ext.extend(Ext.grid.EditorGridPanel, { _record: null, _store: null, _sm: null, _parent: null, constructor: function (_cfg) { if (_cfg == null) _cfg = {}; Ext.apply(this, _cfg); this.txtGroupCode = new Ext.form.TextField({ allowBlank: false, name: 'GroupCode', listeners: { change: function (me, newValue, oldValue) { if (!Ext.isEmpty(newValue) && this.getStore().find('GroupCode', newValue) != -1) { me.setValue(oldValue); } }, scope: this } }); this.txtGroupDesc = new Ext.form.TextField({ allowBlank: false, name: 'GroupDesc' }); this._record = Ext.data.Record.create([ { name: 'Add', mapping: 'Add', type: 'int' }, { name: 'GroupCode', mapping: 'GroupCode', allowBlank: false }, { name: 'GroupDesc', mapping: 'GroupDesc', allowBlank: false } ]) this._record.id = 'GroupCode'; this._store = new TAJsonStore({ fields: this._record, id: 'GroupCode' }); //this.sm = new Ext.grid.RowSelectionModel({ singleSelect: true }); this._sm = new Ext.grid.CheckboxSelectionModel(); this.stripeRows = true; GroupDetailsList.superclass.constructor.call(this, { frame: true, store: this._store, sm: this._sm, tbar: new TAToolbar({ items: [{ SecureTag: '1', text: '增加组别', iconCls: 'TAIconAdd', scale: 'medium', handler: this.onAddGroup, scope: this }, '-', { SecureTag: '1', text: '删除', iconCls: 'TAIconDelete', scale: 'medium', handler: this.onDelGroup, scope: this }, { SecureTag: '1', text: '保存', iconCls: 'TAIconUpdate', scale: 'medium', handler: this.onSave, scope: this}] }), columns: [ this._sm, new Ext.grid.RowNumberer(), //自动行号 {header: '组别代码', dataIndex: 'GroupCode', editor: this.txtGroupCode }, { header: '组别名称', width: 150, dataIndex: 'GroupDesc', editor: this.txtGroupDesc}], listeners: { afterrender: function () { this.list(); } } }) } });
JS方法实现:
1 list: function () { 2 Ext.Msg.wait('Waiting', 'Waiting'); 3 TAAjax.request({ 4 url: 'CSR/CSR002.ashx', 5 params: { action: 'getGroupDetails' }, 6 success: function (req, ops) { 7 Ext.Msg.hide(); 8 var data = Ext.decode(req.responseText); 9 this.getStore().loadData(data); 10 }, 11 failure: function () { 12 Ext.Msg.hide(); 13 }, 14 scope: this 15 }); 16 }, 17 onSave: function () { 18 var sm = this.getSelectionModel(); 19 if (!sm.hasSelection()) return; 20 var records = this.getStore().getRange(); 21 var recordJSONs =this.getStore().getChangeJSON() 22 // if (records.length == 0) return; 23 // var _cptRecords; 24 // _cptRecords = new Array(records.length); 25 // for (var i = 0; i < records.length; i++) { 26 // if (records[i].isValid()) { 27 // _cptRecords[i] = records[i].data; 28 // } else { 29 // Ext.Msg.alert('提示', GetErrDescr('?CSRE005')); 30 // return; 31 // } 32 // } 33 Ext.Msg.wait('Waiting', 'Waiting'); 34 TAAjax.request({ 35 url: 'CSR/CSR002.ashx', 36 params: { action: 'saveGroupDetails', groups: recordJSONs }, 37 success: function (req, ops) { 38 for (var i = 0; i < records.length; i++) { 39 records[i].set('Add', 0); 40 } 41 this.getStore().commitChanges(); 42 Ext.Msg.alert('提示', GetErrDescr('?EHRE739')); 43 }, 44 failure: function () { 45 Ext.Msg.hide(); 46 }, 47 scope: this 48 }); 49 50 51 52 }, 53 onAddGroup: function () { 54 var json = { Add: 1, GroupCode: '', GroupDesc: '' }; 55 var record = new this._record(json); 56 this.getStore().insert(this.getStore().getCount(), record); 57 this.startEditing(this.getStore().getCount() - 1, 1); 58 }, 59 onDelGroup: function () { 60 var sm = this.getSelectionModel(); 61 if (!sm.hasSelection()) return; 62 63 Ext.Msg.confirm('确认', GetErrDescr('?CSRE002'), function (btn) { 64 if (btn == 'yes') { 65 var records = sm.getSelections(); 66 if (records.length == 0) return; 67 var _cptRecords = new Array(); 68 for (var i = 0; i < records.length; i++) { 69 if (records[i].data.Add == 0) { 70 _cptRecords.push(records[i].data); 71 } 72 } 73 } 74 Ext.Msg.wait('Waiting', 'Waiting'); 75 TAAjax.request({ 76 url: 'CSR/CSR002.ashx', 77 params: { action: 'delGroupDetails', groups: Ext.encode(_cptRecords) }, 78 success: function (req, ops) { 79 Ext.Msg.hide(); 80 this.getStore().remove(_cptRecords); 81 this.list(); 82 Ext.Msg.alert('删除', GetErrDescr('?EHRE739')); 83 }, 84 failure: function () { 85 Ext.Msg.hide(); 86 }, 87 scope: this 88 }); 89 }, this); 90 }
一般处理程序:
1 public void getGroupCodeByCSRNo(HttpContext context) 2 { 3 using (var obj = new dbCSR_Group()) 4 { 5 var strCSRNo=context.Request.Params["CSRNo"]; 6 var objGroupLimit = new dbCSR_ActivityGroupLimit(); 7 var groupLimits = objGroupLimit.getActivityGroupLimit(strCSRNo, ""); 8 string[] arrGroupCode = new string[groupLimits.Count()]; 9 for (int i = 0; i < groupLimits.Count(); i++) 10 { 11 arrGroupCode[i] = groupLimits[i].ActivityGroupCode; 12 } 13 var groups = obj.getGroup("", arrGroupCode); 14 context.Response.Write((from p in groups select p.GroupCode).ObjectToJson()); 15 } 16 } 17 public void getGroupDetails(HttpContext context) { 18 dbCSR_Group svdbCSR_Group = new dbCSR_Group(); 19 try 20 { 21 List<CSR_Group> lstGroups = new List<CSR_Group>(); 22 lstGroups = svdbCSR_Group.getGroupDetails().ToList(); 23 context.Response.Write(lstGroups.ObjectToJson()); 24 } 25 catch (Exception ex) 26 { 27 28 throw ex; 29 } 30 } 31 public void saveGroupDetails(HttpContext context) { 32 string strGroupCodes = context.Request.Params["groups"]; 33 dbCSR_Group svdbCSR_Group = new dbCSR_Group(); 34 List<CSR_Group> lstGroups = new List<CSR_Group>(); 35 try 36 { 37 lstGroups = strGroupCodes.JsonStrToObject<List<CSR_Group>>(); 38 svdbCSR_Group.saveGroupDetails(lstGroups.ToArray()); 39 } 40 catch (Exception ex) 41 { 42 throw ex; 43 } 44 45 46 } 47 public void delGroupDetails(HttpContext context) { 48 string strGroupCode = context.Request.Params["groups"]; 49 dbCSR_Group svdbCSR_Group = new dbCSR_Group(); 50 List<CSR_Group> lstCSR_Group = new List<CSR_Group>(); 51 try 52 { 53 lstCSR_Group = strGroupCode.JsonStrToObject<List<CSR_Group>>(); 54 svdbCSR_Group.delGroupDetails(lstCSR_Group.ToArray()); 55 56 } 57 catch (Exception ex) 58 { 59 60 throw ex; 61 } 62 63 }
最后的WebService:
1 [SoapDocumentMethod(Binding = "dbCSR_Group"), WebMethod()] 2 public List<CSR_Group> getGroupDetails() 3 { 4 List<CSR_Group> lstGroups; 5 try 6 { 7 var query = from p in m_dcCSR().CSR_Group 8 select p; 9 //query = query.Where(p => p.GroupCode.Contains("Group12")); 10 11 lstGroups = (List<CSR_Group>)query.ToList(); 12 return lstGroups; 13 } 14 catch (Exception ex) 15 { 16 throw ex; 17 } 18 } 19 /// <summary> 20 /// 删除指定GroupCode对应的值数据 21 /// </summary> 22 /// <param name="a_lstGroups"></param> 23 [SoapDocumentMethod(Binding = "dbCSR_Group"), WebMethod()] 24 public void delGroupDetails(List<CSR_Group> a_lstGroups) 25 { 26 try 27 { 28 foreach (var item in a_lstGroups) 29 { 30 CSR_Group objGroups = new CSR_Group(); 31 List<CSR_Group> lstGroups = new List<CSR_Group>(); 32 33 objGroups = m_dcCSR().CSR_Group.SingleOrDefault(p => p.GroupCode == item.GroupCode); 34 if(objGroups !=null)lstGroups.Add(objGroups); 35 if (lstGroups.Count > 0) 36 { 37 m_dcCSR().CSR_Group.DeleteAllOnSubmit(lstGroups); 38 } 39 } 40 m_dcCSR().SubmitChanges(); 41 } 42 catch (Exception ex) 43 { 44 45 throw ex; 46 } 47 48 } 49 [SoapDocumentMethod(Binding = "dbCSR_Group"), WebMethod()] 50 public void saveGroupDetails(List<CSR_Group> a_lstGroups){ 51 CSR_Group objGroups = new CSR_Group(); 52 List<CSR_Group> lstGroups = new List<CSR_Group>(); 53 try 54 { 55 foreach (var item in a_lstGroups) 56 { 57 objGroups = m_dcCSR().CSR_Group.SingleOrDefault(c=>c.GroupCode==item.GroupCode); 58 if (objGroups!= null) 59 { 60 //lstGroups.Add(objGroups); 61 item.CopyPropertyTo(objGroups); 62 } 63 else 64 { 65 //lstGroups.Add(item); 66 objGroups = new CSR_Group(); 67 item.CopyPropertyTo(objGroups); 68 lstGroups.Add(objGroups); 69 m_dcCSR().CSR_Group.InsertAllOnSubmit(lstGroups); 70 } 71 } 72 m_dcCSR().SubmitChanges(); 73 } 74 catch (Exception ex) 75 { 76 77 throw ex; 78 } 83 }
浙公网安备 33010602011771号