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         }

 

posted @ 2016-04-09 10:00  iDennis  阅读(294)  评论(0)    收藏  举报