• EXTJS4.2——10.Tab+Iframe


    如果使用tab+控件等操作,不仅使得代码堆叠,同时可能导致代码之间耦合极高。所以通过iframe方式,实现tab添加grid的方式。同时通过设置,使得iframe完美填充tab。

    <script>
        Ext.onReady(function () {
            //fit 布局
            var borderPanel = Ext.create('Ext.panel.Panel', {
                //自动获取屏幕大小
                title: '小小公司',
                layout: 'border',//这里设置panel的样式
                items: [{
                    // xtype: 'panel' implied by default
                    title: '小小页面栏',
                    region: 'west',
                    xtype: 'panel',
                    margins: '5 8 4 5',
                     200,
                    collapsible: true,
                    id: 'west-region-container',
                    layout: 'fit',
                    items: treeLocal
                }, {
                    title: '数据展示区',
                    region: 'center',
                    xtype: 'panel',
                    margins: '5 5 0 0',
                    items: [tabs],
                    layout:'fit'
                }],
                renderTo: Ext.getBody()
            });
    
            //这是fit自动填充,实现自动设置大小
            Ext.application({
                name: 'HelloExt',
                launch: function () {
                    Ext.create('Ext.container.Viewport', {
                        layout: 'fit',
                        items: [borderPanel]
                    });
                }
            });
        })
    
        var btnSubmit = Ext.create('Ext.Button', {
            text: '查询',
            //handler是用于设置按按键的时候使用的数据
            handler: function () {
                ExtData.load();
            }
        });
    
        var form = Ext.create('Ext.form.Panel', {
            title: '信息填写',
            layout: 'column',
            //这一步十分重要的,去掉宽度,然后设置自适应,然后这里父窗口不用设置fit
            height: 80,
            // 600,
            bodyPadding: 10,
            forceFit: true,
            items: [{
                xtype: 'textfield',
                name: 'username',
                fieldLabel: 'Name',
                allowBlank: false  //判断是否允许空值
            }, btnSubmit
            ]
        });
    
        var ExtData = Ext.create('Ext.data.Store', {
            storeId: 'employeeStore',
            fields: ['Name', 'Age', 'Address'],//表示在图标上展示的信息
            proxy: {
                type: 'ajax',
                actionMethods: 'post',
                url: '/GridPanel/MessageBack',
                reader: {
                    type: 'json',
                    root: 'data',//注意點
                    totalProperty: 'total'//注意點
                }
            },
            autoLoad: true,
            listeners: {
                beforeload: function (store, operation, eOpts) {
                    //將查詢條件傳遞到後台
                    var postData = {
                        username: $("input[name='username']").val()
                    };
                    Ext.apply(store.proxy.extraParams, postData);
                }
            }
        });
        //设置表格
        var grid = Ext.create('Ext.grid.Panel', {
            title: '详细信息',
            store: Ext.data.StoreManager.lookup('employeeStore'),
            columns: [
                { text: '姓名', dataIndex: 'Name' },
                { text: '年龄', dataIndex: 'Age' },
                { text: '居住地', dataIndex: 'Address' }
            ],
            layout: 'fit',
            forceFit: true
        });
    
        //树的节点数据源
    
        var treeLocal = new Ext.tree.TreePanel({
            title: '选择框',
            //可以去掉树节点之间的线,更加简洁
            useArrows:true,
            root: {
                text: '选择菜单',
                expanded: true,
                leaf: false,
                children: [
                    { id: 'treeFirst', text: '小小菜单', leaf: true }
                ]
            },
            listeners: {
                'itemclick': function (view, rcd, item, idx, event, eOpts) {
    
                    var dirid = rcd.get('id'); //节点id
    
                    //点击小小菜单反应数据
                    if (dirid == "treeFirst" && $("#treePanel1").length == 0) {
                        
                        var tab = tabs.add({
                            // we use the tabs.items property to get the length of current items/tabs
                            title: '数据查询',
                            id: 'treePanel1',
                            //如果想要iframe填充满整个tabs,就需要设置相应的被填充不见为fit布局
                            html:'<iframe src="About" width=100% height=100%></iframe>',
                            closable: true,
                            forceFit: true,
                            closeAction: 'destory',
                            autoDestroy: true
                        });
                        //  tabs.setActiveTab(tab);
                    }
                }
            }
        });
        //创建tab文件操作
        var tabs = Ext.create('Ext.tab.Panel', {
            forceFit: true,
            items: {
                title: '首页',
                html: "这个是leo的测试文件"
            }
        });
    </script>
    

  • 相关阅读:
    ubuntu全版本通用换源教程
    【Pybind11】Python调用C++接口(Ubuntu下编译OpenCV)
    ubuntu18.04如何安装python3.5及其pip安装
    smb和rdp暴破差异分析
    如何修改smb服务的默认445端口?——官方回答是无法修改,但是可以使用端口转发
    开集识别——流形
    10种常见的进程注入技术的总结
    webmine和cryptowebminer挖矿——一句<iframe width=0 height=0 frameborder=0 src='https://webmine.cz/worker?key=[YOUR_API_KEY]'></iframe>搞定
    进程隐藏与进程保护(SSDT Hook 实现)(一)
    deepMiner —— 本质上类似coinhive,也是后端开启nodejs连接矿池,默认的连接门罗币矿池
  • 原文地址:https://www.cnblogs.com/LY-CS/p/12751111.html
Copyright © 2020-2023  润新知