extjs grid添加一行数据

这是一个关于ExtJS的代码示例,展示了如何创建一个包含编辑功能的表格组件。表格支持单元格编辑,包括新建、删除和保存操作。用户可以对取值数量、单价、单价单位、保底金额和备注等字段进行编辑。此外,还包括了费用阶梯的管理,如新建、删除和保存。代码中还包含了事件监听,用于处理用户输入和编辑行为。
摘要由CSDN通过智能技术生成

页面:

Ext.define('Admin.view.cus.cusPutrecord.PutrecordTraiffBillListView', {
    extend: 'Ext.grid.Panel',
    xtype: 'putrecordtraiffbilllist',
    bind: '{putrecordTraiffBillStore}',
    // selType: "cellmodel",
    selModel: {
        selType: 'checkboxmodel',
        mode: 'MULTI'
    },
    requires: [
        'Admin.store.bas.PutrecordTraiffBillStore'
    ],
    columnLines: true,
    // forceFit: true,
    // stateful: true,
    border: 0,
    viewConfig: {
        enableTextSelection: true   //可以复制单元格文字
    },
    dockedItems: [
        {
            xtype: 'form',
            dock: 'top',
            //defaultType: 'textfield',
            style: 'border-radius: 0px 0px 0px 0px;',
            bodyPadding: '5 0 0 0',
            frame: true,
            layout: 'column'
        }, {
            xtype: 'toolbar',
            dock: 'top',
            items: [{
                xtype: 'label',
                html: "<strong><font>&nbsp;&nbsp;费用阶梯</font></strong>"
            }, {
                iconCls: 'x-fa fa-question-circle',
                action: 'operating_instruction'
            }, '->', {
                iconCls: 'x-fa fa-plus-circle',
                text: '新建',
                handler: 'putrecordtraiffbillAdd'
            }, {
                iconCls: 'x-fa fa-minus-circle',
                text: '删除',
                handler: 'putrecordtraiffbillDel'
            },
            {
                iconCls: 'x-fa fa-check',
                text: '保存',
                handler:'savePutrecordDetailTraiff',
            }]
        }, {
            xtype: 'pagingtoolbar',
            bind: '{putrecordTraiffBillStore}',
            dock: 'bottom',
            plugins: {
                ptype: 'comboPageSize'
            },
            displayInfo: true
        }],
    columns: [
        {
            header: '取值数量', dataIndex: 'stepNo', name: 'stepNo',style : {'text-align' : 'left'},align: 'right',
            editor: {
                xtype: 'numberfield',
                hideTrigger: true,
                decimalPrecision: 5,
                listeners: {
                    specialkey: function (field, e) {
                        if (e.getKey() === e.ENTER) {
                            setTimeout(function () {
                                var grid = field.up('grid');
                                var store = grid.getStore();
                                var selectData = grid.getSelectionModel().getSelection()[0];
                                var dataIndex = store.indexOf(selectData);
                                var edit = grid.getPlugin();
                                edit.startEditByPosition({
                                    row: dataIndex + 1,
                                    column: 1
                                });
                            }, 500);
                        }
                    }

                }
            }
        },
        {
            header: '单价', dataIndex: 'stepPrice', name: 'stepPrice',style : {'text-align' : 'left'},align: 'right',
            editor: {
                xtype: 'numberfield',
                hideTrigger: true,
                decimalPrecision: 5,
                listeners: {
                    specialkey: function (field, e) {
                        if (e.getKey() === e.ENTER) {
                            setTimeout(function () {
                                var grid = field.up('grid');
                                var store = grid.getStore();
                                var selectData = grid.getSelectionModel().getSelection()[0];
                                var dataIndex = store.indexOf(selectData);
                                var edit = grid.getPlugin();
                                edit.startEditByPosition({
                                    row: dataIndex + 1,
                                    column: 2
                                });
                            }, 500);
                        }
                    }

                }
            }
        },
        {
            header: '单价单位', dataIndex: 'stepPriceUnit', name: 'stepPrice',
            editor: {
                xtype: 'numberfield',
                hideTrigger: true,
                decimalPrecision: 5,
                listeners: {
                    specialkey: function (field, e) {
                        if (e.getKey() === e.ENTER) {
                            setTimeout(function () {
                                var grid = field.up('grid');
                                var store = grid.getStore();
                                var selectData = grid.getSelectionModel().getSelection()[0];
                                var dataIndex = store.indexOf(selectData);
                                var edit = grid.getPlugin();
                                edit.startEditByPosition({
                                    row: dataIndex + 1,
                                    column: 3
                                });
                            }, 500);
                        }
                    }

                }
            }
        },
        {
            header: '保底金额', dataIndex: 'bottomPrice', name: 'bottomPrice1',style : {'text-align' : 'left'},align: 'right',
            editor: {
                xtype: 'numberfield',
                hideTrigger: true,
                decimalPrecision: 5,
                listeners: {
                    specialkey: function (field, e) {
                        if (e.getKey() === e.ENTER) {
                            setTimeout(function () {
                                var grid = field.up('grid');
                                var store = grid.getStore();
                                var selectData = grid.getSelectionModel().getSelection()[0];
                                var dataIndex = store.indexOf(selectData);
                                var edit = grid.getPlugin();
                                edit.startEditByPosition({
                                    row: dataIndex + 1,
                                    column: 4
                                });
                            }, 500);
                        }
                    }

                }
            }
        },
        {
            header: '备注', dataIndex: 'remark', name: 'remark',
            editor: {
                xtype: 'textfield',
                listeners: {
                    specialkey: function (field, e) {
                        if (e.getKey() === e.ENTER) {
                            setTimeout(function () {
                                var grid = field.up('grid');
                                var store = grid.getStore();
                                var selectData = grid.getSelectionModel().getSelection()[0];
                                var dataIndex = store.indexOf(selectData);
                                var edit = grid.getPlugin();
                                edit.startEditByPosition({
                                    row: dataIndex + 1,
                                    column: 5
                                });
                            }, 500);
                        }
                    }
                }
            }
        },
        {header: '编号', dataIndex: 'tariffId', hidden: true},
        {header: '创建人', dataIndex: 'createUserName', hidden: true},
        {
            header: '创建时间',
            dataIndex: 'createDate',
            xtype: 'datecolumn',
            format: 'Y-m-d H:i:s',
            align: 'center',
            hidden: true
        },
        {header: '修改人', dataIndex: 'updateUserName', hidden: true},
        {
            header: '修改时间',
            dataIndex: 'updateDate',
            xtype: 'datecolumn',
            format: 'Y-m-d H:i:s',
            align: 'center',
            hidden: true
        }
    ],
   /* plugins: [Ext.create('Ext.grid.plugin.CellEditing', {
        clicksToEdit: 1
    })]*/
    plugins: {
        ptype: 'cellediting',
        clicksToEdit: 1
    }
});

con:

 putrecordtraiffbillAdd: function (button) {
        //费用阶梯新增按钮触发
        // var grid=this.lookupReference("putrecorddetaillist");
        var grid = Ext.ComponentQuery.query('putrecorddetaillist',null,true);
        var records=grid.getSelectionModel().getSelection();
        if(records.length===1){
            var grid1 = button.up('grid');// 获得表格数据
            var store = grid1.getStore('putrecordTraiffBillStore');
            var p = {
                stepNo:'',
                stepPrice:'',
                stepPriceUnit:'',
                bottomPrice1:'',
                remark:''
            }
            store.insert(store.data.items.length, p);
        }else{
            Ext.Msg.alert("提示", '请选择费用项表的一行数据');
        }
    },

新增保存&删除:

savePutrecordDetailTraiff: function (button) {
        // 子点击保存触发
        var me = this;
        var grid = button.up("grid");
        var store = me.getStore("billingLadderStore");
        var putrecordList = new Array();
        var form = grid.down('form').getForm();
        if (form.isValid()) {
            for (var i = 0; i < store.getCount(); i++) {
                var record = store.getAt(i);
                putrecordList.push(record.data);
            }
            var mainValue = grid.down('form').getForm().getValues();
            var main = Ext.ComponentQuery.query('billingSchemeDetailListView', null, true);
            var headRecords = main.getSelectionModel().getSelection();
            // var mainRecords=me.getPutrecordlist().getSelectionModel().getSelection();
            const billingDetailId = headRecords[0].data.billingDetailId;
            mainValue.ladderList = putrecordList;
            mainValue.billingDetailId = billingDetailId
            Ext.Ajax.request({
                url: 'cus/billing/saveBillingLadder',
                /* params: form.getValues(), */
                jsonData: Ext.encode(mainValue),
                method: 'POST',
                success: function (response) {
                    var o = Ext.decode(response.responseText.toString());
                    if (o.success === true) {
                        // var store=me.getStore("PutrecordDetailStore");
                        store.proxy.extraParams = {
                            billingDetailId: billingDetailId
                        };
                        store.load();
                        // me.getStore("putrecordTraiffBillStore").removeAll();
                        Ext.Msg.alert("提示", "保存成功!");
                    } else {
                        Ext.Msg.alert("警告", o.message);
                    }
                },
                failure: function (response) {
                    Ext.Msg.alert("错误", response.responseText);
                }
            });
        }
    },
    onDelChildClick: function (button) {
        // 子表格点击删除按钮触发
        var me = this;
        // var grid=this.lookupReference('billingSchemeListView');
        var pgrid = Ext.ComponentQuery.query('billingSchemeListView', null, true);
        var precords = pgrid.getSelectionModel().getSelection();
        var store = me.getStore("billingDetailStore");
        var grid = button.up("grid");
        var records = grid.getSelectionModel().getSelection();
        if (records.length > 0) {
            Ext.Msg.confirm('询问', '是否确认删除?', function (buttonId) {
                if (buttonId === 'yes') {
                    // console.log(records[0].data.billingDetailId)
                    var idstr = "";
                    for (var j = 0; j < records.length; j++) {
                        if (records[j].data.billingDetailId === null || records[j].data.billingDetailId === "") {
                            /* 删除已经前台添加一行的数据 */
                            store.remove(records);
                        } else {
                            /* 删除已经添加到后台的数据 */
                            for (var i = 0; i < records.length; i++) {
                                if (i === 0) {
                                    idstr = records[i].data.billingDetailId;
                                } else {
                                    idstr = idstr + "," + records[i].data.billingDetailId;
                                }
                            }
                            Ext.Ajax.post({
                                url: 'cus/billing/deleteBillingDetail',
                                params: {
                                    billingDetailIdStr: idstr,
                                },
                                method: 'POST',
                                waitMsg: '正在处理,请稍等...',
                            }).then(result => {
                                Ext.Msg.alert("提示", "删除成功!");
                                var billingId = precords[0].data.billingId;
                                store.proxy.extraParams = {
                                    billingId: billingId
                                };
                                store.loadPage(1);
                            }).catch(error => {
                                Ext.Msg.alert("警告", error.message);
                            });
                        }
                    }

                }
            });
        } else {
            Ext.Msg.alert("提示", '请选择要删除的数据');
        }
    },
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值