extJs弹出动态表格和列表

extJs弹出动态表格和列表
1.extJs弹出可编辑表格

效果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
在这里插入图片描述

弹出下面的可编辑表格

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
在这里插入图片描述

话不多说:上代码

       //自己的事件名称
	   function  test() {
        var records = this.grid.getSelection();
        if (records.length < 1) {
            Ext.alert("提示", "请先选择数据!");
            return;
        }
        //设置 store store数据
        var myModel = Ext.define("InStore", {
            extend: 'Ext.data.Model',
            fields: ['字段1', '字段2', '字段3', '字段4', '字段5', '字段6', '字段7', '字段8', '字段9']
        });
        //接受后台返回数据
        var myStore = Ext.create("Ext.data.JsonStore", {
            model: 'InStore',
            proxy: {
                // load using HTTP
                type: 'ajax',
                url: '加载数据的url?字段=' + xx + '&token=' + token,
                // the return will be XML, so lets set up a reader
                reader: {
                    type: 'json',
                    root: 'value' //数据path
                }
            }
        });

        //加载数据
        myStore.load();
        //声明表格
        var grid = new Ext.grid.GridPanel({
            xtype: 'grid',
            border: true,
            columns: [
           
                {
                    dataIndex: '到货通知编号对应的展示字段',
                    width: 200,
                    text: '到货通知编号'
                },
                {
                    dataIndex: '商品名称对应的展示字段',
                    width: 250,
                    text: '商品名称'
                },
         
                {
                    dataIndex: '应收数量对应的展示字段',
                    text: '应收数量'
                },
                {
                    dataIndex: '实收数量对应的展示字段',
                    text: '实收数量',
                    editor: {
                        allowBlank: true
                    }
                },
                {
                    dataIndex: '正品数量对应的展示字段',
                    text: '正品数量',
                    editor: {
                        allowBlank: true
                    }
                },
                {
                    dataIndex: '生产日期对应的展示字段',
                    text: '生产日期',
                    renderer: Ext.util.Format.dateRenderer('Y-m-d'),
                    editor: {
                        xtype: "datefield",
                        format: "Y-m-d",
                        allowBlank: true
                    }
                },
                {
                    dataIndex: '失效日期对应的展示字段',
                    text: '失效日期',
                    renderer: Ext.util.Format.dateRenderer('Y-m-d'),
                    editor: {
                        xtype: "datefield",
                        format: "Y-m-d",
                        allowBlank: true
                    }
                }

            ],
            store: myStore,
            plugins: [
                Ext.create('Ext.grid.plugin.CellEditing', {
                    clicksToEdit: 1 //设置单击单元格编辑
                })
            ],
            buttons: [{
                text: '保存',
                listeners: {
                    click: function () {
                        var m = myStore.getModifiedRecords().slice(0);
                        var jsonArray = [];
                        Ext.each(m, function (item) {
              
                            //此处加上对应的判断
                            
                            jsonArray.push(item.data);
                        });
                        if (jsonArray.length <= 0) {
                            return confirmWin.close();
                        }

                        Ext.Ajax.request({
                            method: 'POST',
                            // 保存接口
                            url: '保存数据的url',
                            jsonData: {list: jsonArray},
                            headers: {'Content-Type': 'application/json', 'Authorization': token},
                            dataType: 'json',
                            //scope : this,
                            success: function (response) {
                                var res = Ext.JSON.decode(response.responseText);
                                Ext.Msg.alert("提示", res.message);
                                return confirmWin.close();
                            },
                            failure: function () {
                                Ext.Msg.alert("错误", "与后台联系的时候出了问题。");
                            },
                        });
                    }
                }
            }]
        });
        //创建窗口
        // window 需要修改 不要重复
        var confirmWin = Ext.create('Ext.window.Window', {
            title: '标题',
            width: 1161,
            height: 550,
            layout: 'fit',
            items: [grid]
        }).show();

    }

2.extJs弹出列表

效果
在这里插入图片描述

弹出的框框
在这里插入图片描述

上代码:

var GlobalPanel = ''
//这个美神
var myModel = Ext.define("InStore", {
    extend: 'Ext.data.Model',
    fields: ['字段一''字段二']
});
//接受后台返回数据

var myStore = Ext.create("Ext.data.JsonStore", {
    model: 'InStore'
});
//伪造的数据  可以替代testData模拟假数据看效果
var data = [{
    "rid": 22142,
    "packageCode": "3000000014",
    "orderNo": "tkoo21",
    "goodsNo": "smallWaybillNo",
    "waybillNo": "222342228",
    "logisCompanyCode": "2罐奶粉"
}]
//加载数据
myStore.load();

var grid = new Ext.grid.GridPanel({
    xtype: 'grid',
    border: true,
    columns: [
        {
            dataIndex: '包裹编号字段',
            text: '包裹编号'
        },
        {
            dataIndex: '拆后订单号字段',
            text: '拆后订单号'
        },
        {
            dataIndex: '子订单号字段',
            text: '子订单号'
        },
        {
            dataIndex: '父订单号字段',
            text: '父订单号'
        },
        {
            dataIndex: '物流企业编码字段',
            text: '物流企业编码'
        },
        {
            dataIndex: '是否拆包字段',
            text: '是否拆包'
        },
        {
            dataIndex: '是否发货字段',
            text: '是否发货'
        },
    ],
    store: myStore

});
var testData = [];

root.js.wmsmgr.ordermgr.ParcelDtlDetail = Ext.extend(system.javascript.extjs.plugin.tool.DetailPanel, {
    width: 600,
    height: 300,
    layout: {
        type: 'table',
        columns: 8
    },
    items: [grid],
    initValue: function () {


    },
    initAutoStatus: function () {
        var orderNo = this.grid.selection.data.order_no;
        Ext.Ajax.request( {
            timeout : 3000000,
            url : 'url',
            params : '字段=' + 字段 + '&token=' + token ,
            success : function(response, config) {
                var res=Ext.decode(response.responseText);
                if(res.success){
                    var json =response.responseText;
                    testData = JSON.parse(json).value;
                    myStore.loadData(testData, true);
                }
            },
            failure : function(form, action) {
            }
        });
        myStore.loadData(testData, true);//初始化
    },

})

Data = JSON.parse(json).value;
myStore.loadData(testData, true);
}
},
failure : function(form, action) {
}
}
myStore.loadData(testData, true);//初始化
},

})

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ExtJS2 中,要实现可编辑表格并在编辑时弹出窗口,你可以使用 GridPanel 的编辑插件(EditingGridPanel)和窗口组件(Window)的结合。 首先,你需要创建一个可编辑的 GridPanel,并为其指定一个编辑插件。然后,你可以在编辑事件中弹出一个窗口,让用户进行编辑操作。在窗口中进行的编辑完成后,将更新的数据保存到 GridPanel 中。 以下是一个示例代码,演示如何在 ExtJS2 中实现可编辑表格弹出窗口进行编辑: ```javascript Ext.onReady(function() { // 创建数据模型 var store = new Ext.data.Store({ fields: ['name', 'email', 'phone'], data: [ { name: 'John Doe', email: 'john@example.com', phone: '123-456-7890' }, { name: 'Jane Smith', email: 'jane@example.com', phone: '987-654-3210' }, // ... ] }); // 创建列模型 var columnModel = new Ext.grid.ColumnModel({ columns: [ { header: 'Name', dataIndex: 'name', editor: new Ext.grid.GridEditor(new Ext.form.TextField()) }, { header: 'Email', dataIndex: 'email', editor: new Ext.grid.GridEditor(new Ext.form.TextField()) }, { header: 'Phone', dataIndex: 'phone', editor: new Ext.grid.GridEditor(new Ext.form.TextField()) } ] }); // 创建 GridPanel var grid = new Ext.grid.EditorGridPanel({ store: store, cm: columnModel, renderTo: Ext.getBody(), clicksToEdit: 1, // 设置为 1,表示单击单元格即可进入编辑状态 plugins: [new Ext.ux.grid.RowEditor()], // 使用 RowEditor 插件 listeners: { afteredit: function(editor, changes, record, rowIndex) { // 单元格编辑完成后触发 var win = new Ext.Window({ title: 'Edit', layout: 'form', items: [ new Ext.form.TextField({ fieldLabel: 'Name', value: record.get('name') }), new Ext.form.TextField({ fieldLabel: 'Email', value: record.get('email') }), new Ext.form.TextField({ fieldLabel: 'Phone', value: record.get('phone') }) ], buttons: [{ text: 'Save', handler: function() { // 保存编辑后的数据 record.set('name', win.getComponent(0).getValue()); record.set('email', win.getComponent(1).getValue()); record.set('phone', win.getComponent(2).getValue()); win.close(); } }] }); win.show(); } } }); }); ``` 在上面的示例中,我们使用了 RowEditor 插件来实现行级别的编辑功能。在 afteredit 事件中,我们弹出了一个窗口,允许用户在窗口中进行编辑操作。在窗口中的 Save 按钮的事件处理程序中,我们将编辑后的数据保存到 GridPanel 中。 请注意,示例中使用了 Ext.form.TextField 来创建文本输入框,你可以根据实际需求使用其他表单组件。 希望这对你有帮助!如有更多问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值