extjs 之Ext.data.Store[Grid]操作 【增删修改】

本文详细介绍了如何使用ExtJS中的Store进行数据的增加、删除和修改操作。在增加部分,展示了如何通过Form提交数据并处理响应。删除部分讲解了如何选择并删除记录,同时注意了前台删除可能导致的索引错误问题。而在修改部分,阐述了更新记录的步骤,包括获取表单数据和更新Store中的对应记录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ext.data.Store是extjs的数据结构。
主要用于extjs的grid和combobox等控件的数据加载和操作。实际上对grid的增删改可以通过对store的操作来控制.

1、增加提交:

     buttons: [{
            text: '保存',
            handler:function(){
              if (Docnum_Add_Form.getForm().isValid()) {   //判断提交的数据是否符合正则表达式
                Docnum_Add_Form.getForm().submit({
                    waitTitle: '提示', //标题
                    waitMsg: '正在保存数据请稍后...', //提示信息                    
                    url: '../../ashx/car/Tra_Docnum_add.ashx',
                    method: "POST",
                    success: function (form, action) {
                        //成功后
                        mystore.load();
                        Docnum_Add_Win.hide();                            
                        return;
                        /* 方法一
                        mystore.insert(0,[{}]);   //插入空记录
                        var _rec=mystore.getAt(0);
                        _rec.set('Docnum', form.findField('Docnum').value);
                        _rec.commit();
                        */
                        /*  方法二
                        var _rec = Ext.create('MyData',{Dconum:form.findField('Docnum').value});
                        _rec.insert(0,_rec);
                        */
                    },
                    failure: function (form, action) {
                        var errorObj = Ext.JSON.decode(action.response.responseText);
                        Ext.Msg.show({
                                  title: '错误提示',
                                  msg: errorObj.msg,
                                  buttons: Ext.Msg.OK,
                                  icon: Ext.Msg.ERROR
                         });
                    }
                })
              }
              else {
                alert('出错!输入数据格式出错 !');
              }            
          }
        }, {
            text: '取消',
            handler: function () { Docnum_Add_Win.hide(); }            
     }]

2、删除部分


    var btnDeleteAction = Ext.create('Ext.Action', {
        id:'BtnDelete',
        iconCls: 'deleteicon',
        text: '作废',
        disabled: false,
        minWidth: 60,
        handler: function (widget, event) {
               var rec = mygrid.getSelectionModel().getSelection()[0];
               var _docnum = rec.get('Docnum');
               Ext.Msg.show({
                   title: "提示", msg: "确认要作废单号<"+_docnum+">,是吗?", width: 300, icon: Ext.MessageBox.QUESTION
                 , buttons: Ext.MessageBox.YESNO,
                fn: function(btn) {
                    if (btn === "yes") {
                          //首先删除后台信息
                        Ext.Ajax.request({
                                url:"/ashx/car/Tra_Docnum_del.ashx",
                             method:"POST",
                                params:{Docnum:rec.get('Docnum')},
                                success:function(response, opts){  
                                    var _index = mystore.indexOf(rec);
                                    mystore.removeAt(_index);

                                   //   mystore.removeAt(rec.index);      此为原方式,不能用的。
                               },
                               failure:function(response, opts){
                                   var _text = response.responseText;
                                   Ext.Msg.alert("提 示",_text);
                             }
                        });
                     }
                   }
            })
        }
    });
     注意点:由于前台删除,没有刷新,当删除下一条数据时,还是用mystore.removeAt(rec.index) 方式,就会错误删除了其他记录,因为mystore没有重新编索引,所以你取到的还是上次加载时的索引,所以要用查找记录,得到当前实际索引再删除才可,这问题开始没注意,EXT也有考虑不全的地方,算不算Bug不知道。


3、更改部分

     buttons: [{
            text: '保存',
            handler:function(){
              if (Docnum_Upd_Form.getForm().isValid()) {   //判断提交的数据是否符合正则表达式
                Docnum_Upd_Form.getForm().submit({
                    waitTitle: '提示', //标题
                    waitMsg: '正在保存数据请稍后...', //提示信息                    
                    url: '../../ashx/car/Tra_Docnum_Upd.ashx',
                    method: "POST",
                    success: function (form, action) {
                        //成功后
                        //mystore.load();
                        //return;
                        var flag = action.result.success;
                        if (flag ) {
                            var rec = mystore.getAt(_rec.index);
                            rec.set('Docnum', form.findField('Docnum').value);
                            //rec.set('UseDate', form.findField('UseDate').value);   //这种取法为对象,由于不是日期类型所以不能用
                            rec.set('UseDate', form.findField('UseDate').rawValue);  //直接取文本框中的数据,日期型式时直接取文本
                            rec.set('DeptName', form.findField('DeptName').value);
                            rec.set('CarType', form.findField('CarType').value);
                            rec.set('ToWhere', form.findField('ToWhere').value);
                            rec.set('CreateUser', form.findField('CreateUser').value);
                            rec.set('CreateDate', form.findField('CreateDate').value);
                            rec.set('Checked', form.findField('Checked').value);
                            //rec.set('CheckUser', form.findField('CheckUser').value);
                            //rec.set('CheckDate', form.findField('CheckDate').value);
                            rec.set('PlanMan', form.findField('PlanMan').value);
                            rec.set('PlanTon', form.findField('PlanTon').value);
                            rec.set('UseRemark', form.findField('UseRemark').value);
                            rec.set('MantelNo', form.findField('MantelNo').value);
                            rec.commit();   //去除单元格的
                            Docnum_Upd_Win.hide();                          
                        }
                    },
                    failure: function (form, action) {
                        var errorObj = Ext.JSON.decode(action.response.responseText);
                        Ext.Msg.show({
                                  title: '错误提示',
                                  msg: errorObj.msg,
                                  buttons: Ext.Msg.OK,
                                  icon: Ext.Msg.ERROR
                         });
                    }
                })
              }
              else {
                alert('出错!输入数据格式出错 !');
              }            
          }
        }, {
            text: '取消',
            handler: function () { Docnum_Upd_Win.hide(); }            
     }]



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

trassion

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值