Extjs 单独定义各组件的示例

网上看到的一个事例,其中包含了组件的定义拷贝下来供大家参考:


            Ext.onReady(function(){    
                 var dtCategory=[    
                    ['all','所有种类'],    
                    ['1','Beverages'],    
                    ['2','Condiments'],    
                    ['3','Confections'],    
                    ['4','Dairy Products'],    
                    ['5','Grains/Cereals'],     
                    ['6','Meat/Poultry  '],    
                    ['7','Produce'],    
                    ['8','Seafood']    
                ];    
                var stCategory=new Ext.data.SimpleStore({    
                    fields:['value','text'],    
                    data:dtCategory    
                });    
                var cbCategory=new Ext.form.ComboBox({    
                    id:"cbCategory",    
                    store:stCategory,    
                    displayField:"text",    
                    valueField:"value",    
                    typeAhead:true,    
                    mode:"local",    
                    triggerAction:"all",    
                    emptyText:"请选择商品种类...",    
                    editable:false,    
                    allowBlank:false,    
                    blankText:"商品种类必须选择",    
                    autoSelect:true,    
                    selectOnFoucus:true,    
                    value:'',    
                    dfval:''    
                });    
                cbCategory.setValue("all");    
                    
                var tfName=new Ext.form.TextField({    
                    id:'tfName'    
                });    
                var btnSearch=new Ext.Button({    
                    id:'btnSearch',    
                    iconCls:'btn_search',    
                    text:'搜索',    
                    handler:function(){    
                        stProduct.load({params:{start:0,limit:10,categoryName:Ext.getCmp("cbCategory").getValue(),productName:Ext.getCmp("tfName").getValue()}});    
                    }    
                        
                });    
                var btnHelp=new Ext.Button({    
                    text:'帮助',    
                    iconCls:'btn_help'    
                })    
                var tb=new Ext.Toolbar({    
                    id:'tb',    
                    items:[    
                        '商品种类:',    
                        cbCategory,    
                        '-',    
                        '商品名称:',    
                        tfName,    
                        btnSearch,    
                        '->',    
                        btnHelp    
                    ]    
                });    
                var pnNorth=new Ext.Panel({    
                    id:'pnNorth',    
                    region:'north',    
                    autoHeight:true,    
                    items:[    
                        tb    
                    ]    
                });    
                    
                    
                   
                    
                    
                    
                var url="Default.aspx";    
                var stProduct=new Ext.data.Store({    
                    id:"st",    
                    proxy:new Ext.data.HttpProxy({url:url}),    
                    reader:new Ext.data.JsonReader({totalProperty:"totalProperty",root:"root",fields:[{name:"ProductID"},{name:"ProductName"},{name:"CategoryName"},{name:'UnitPrice'},{name:'Discontinued'},{name:'QuantityPerUnit'},{name:'CompanyName'}] })//ProductID作为隐藏列,不显示在gridpanel中    
                });      
                stProduct.load({params:{start:0,limit:10,categoryName:Ext.getCmp("cbCategory").getValue(),productName:Ext.getCmp("tfName").getValue()}});    
                var cmProduct=new Ext.grid.ColumnModel([    
                        new Ext.grid.RowNumberer(),    
                        {header:"产品名称",dataIndex:"ProductName",sortable:true},    
                        {header:"产品种类",dataIndex:"CategoryName",sortable:true},    
                        {header:"单价",dataIndex:"UnitPrice",sortable:true},    
                        {header:"是否停产",dataIndex:"Discontinued",sortable:true},    
                        {header:"规格",dataIndex:"QuantityPerUnit",sortable:true},    
                        {header:"供货商",dataIndex:"CompanyName",sortable:true}    
                    ]);    
                var pgtbProduct=new Ext.PagingToolbar({    
                    id:"pgtbProduct",    
                    displayInfo:true,    
                    emptyMsg:"没有数据要显示!",    
                    displayMsg:"当前为第{0}--{1}条,共{2}条数据",    
                    store:stProduct,    
                    pageSize:10    
                        
                });    
                var grdProduct=new Ext.grid.GridPanel({    
                    id:"grdProduct",    
                    title:"商品信息",     
                    cm:cmProduct,    
                    store:stProduct,    
                    autoWidth:true,    
                    selModel:new Ext.grid.RowSelectionModel({single:true}),    
                    height: screen.availHeight-190,    
                    frame: true,    
                    pageSize:20,    
                    bbar:pgtbProduct,    
                    //autoExpandColumn:6,    
                    loadMask:true,    
                    viewConfig:{    
                        forceFit:true    
                    }    
                });    
                    
                    
                    
                var stSupplier = new Ext.data.Store({    
                    id: "stSupplier",    
                    autoLoad:true,    
                    proxy: new Ext.data.HttpProxy({ url: "ProductInfo.aspx?type=getSupplierInfo" }),    
                    reader: new Ext.data.JsonReader({ totalProperty: "totalProperty", root: "root", fields: [{ name: "sID" }, { name: "cName"}] })    
                });    
                    
                    
                var pnProduct=new Ext.Panel({    
                    id:'pnProduct',    
                    title:'商品信息',    
                    autoHeight:true,    
                    items:[    
                        new Ext.Panel({    
                            id:'pnProductRowOne',    
                            border:false,    
                            bodyStyle:'padding-top:10px;',    
                            layout:'column',    
                            items:[    
                                new Ext.Panel({    
                                    columnWidth:.5,    
                                    border:false,    
                                    layout:'form',    
                                    labelWidth:60,    
                                    labelAlign:'right',    
                                    items:[    
                                        {    
                                            xtype:'textfield',    
                                            id:'ProductName',    
                                            name:'ProductName',    
                                            fieldLabel:'商品名称',    
                                            anchor:'95%'    
                                        }    
                                    ]    
                                }),    
                                new Ext.Panel({    
                                    columnWidth:.25,    
                                    border:false,    
                                    layout:'form',    
                                    labelWidth:60,    
                                    labelAlign:'right',    
                                    items:[    
                                        {    
                                            xtype:'radio',    
                                            id:'DiscontinuedOneID',    
                                            //hiddenName:'Discontinued',    
                                            name:'Discontinued',    
                                            inputValue:'1',    
                                            fieldLabel:'是否停售',    
                                            boxLabel:'是',    
                                            anchor:'95%'    
                                        }    
                                    ]    
                                }),    
                                new Ext.Panel({    
                                    columnWidth:.25,    
                                    border:false,    
                                    layout:'form',    
                                    labelWidth:60,    
                                    labelAlign:'right',    
                                    items:[    
                                        {    
                                            xtype:'radio',    
                                            id:'DiscontinuedTwoID',    
                                            //hiddenName:'Discontinued',    
                                            name:'Discontinued',    
                                            checked:true,    
                                            inputValue:'0',    
                                            boxLabel:'否',    
                                            anchor:'95%'    
                                        }    
                                    ]    
                                })    
                              
                            
                            
                            
                            
                            ]    
                                
                        }),    
                        new Ext.Panel({    
                            id:'pnProductRowTwo',    
                            border:false,    
                            layout:'column',    
                            items:[    
                                new Ext.Panel({    
                                    columnWidth:.5,    
                                    border:false,    
                                    layout:'form',    
                                    labelWidth:60,    
                                    labelAlign:'right',    
                                    items:[    
                                        {    
                                            xtype:'textfield',    
                                            id:'QuantityPerUnit',    
                                            name:'QuantityPerUnit',    
                                            fieldLabel:'规格',    
                                            anchor:'95%'    
                                        }    
                                    ]    
                                }),    
                                new Ext.Panel({    
                                    columnWidth:.5,    
                                    border:false,    
                                    layout:'form',    
                                    labelWidth:60,    
                                    labelAlign:'right',    
                                    items:[    
                                        {    
                                            xtype:'textfield',    
                                            id:'UnitPrice',    
                                            name:'UnitPrice',    
                                            fieldLabel:'单价',    
                                            anchor:'95%'    
                                        }    
                                    ]    
                                })    
                            ]    
                                
                        }),    
                        new Ext.Panel({    
                            id:'pnProductRowThree',    
                            border:false,    
                            layout:'column',    
                            items:[    
                                new Ext.Panel({    
                                    columnWidth:.5,    
                                    border:false,    
                                    layout:'form',    
                                    labelWidth:60,    
                                    labelAlign:'right',    
                                    items:[    
                                        {    
                                            xtype:'textfield',    
                                            id:'UnitsInStock',    
                                            name:'UnitsInStock',    
                                            fieldLabel:'库存量',    
                                            anchor:'95%'    
                                        }    
                                    ]    
                                })    
                                ,    
                                new Ext.Panel({    
                                    columnWidth:.5,    
                                    border:false,    
                                    layout:'form',    
                                    labelWidth:60,    
                                    labelAlign:'right',    
                                    items:[    
                                        {    
                                            xtype:'combo',    
                                            id:'CommpanyName',    
                                            //name:'CommpanyName',    
                                            hiddenName:'SupplierID',    
                                            fieldLabel:'供货商',    
                                            displayField: 'cName',    
                                            valueField: 'sID',    
                                            mode: 'local',    
                                            typeAhead: true,    
                                            triggerAction: "all",    
                                            editable: false,    
                                            allowBlank: false,    
                                            autoSelect: true,    
                                            selectOnFoucus: true,    
                                            store: stSupplier,    
                                            anchor:'95%'    
                                        }    
                                    ]    
                                })    
                            ]    
                                
                        })    
                            
                    ]    
                });    
                var pnCategory=new Ext.Panel({    
                    id:'pnCategory',    
                    title:'商品相关种类信息',    
                    autoHeight:true,    
                    items:[    
                        new Ext.Panel({    
                            id:'pnCategoryRowOne',    
                            border:false,    
                            bodyStyle:'padding-top:10px;',    
                            layout:'column',    
                            items:[    
                                new Ext.Panel({    
                                    columnWidth:.5,    
                                    border:false,    
                                    layout:'form',    
                                    labelWidth:60,    
                                    labelAlign:'right',    
                                    items:[    
                                        {    
                                            xtype:'textfield',    
                                            id:'CategoryName',    
                                            name:'CategoryName',    
                                            fieldLabel:'商品种类',    
                                            anchor:'95%'    
                                        },    
                                        {    
                                            xtype:'textfield',    
                                            id:'Description',    
                                            name:'Description',    
                                            fieldLabel:'商品描述',    
                                            anchor:'95%'    
                                        },    
                                        {    
                                            xtype:'hidden',    
                                            id:'CategoryID',    
                                            name:'CategoryID',    
                                            fieldLabel:'种类编号'//这个是隐藏的    
                                        }    
                                    ]    
                                }),    
                                new Ext.Panel({    
                                    columnWidth:.5,    
                                    border:false,    
                                    bodyStyle:'padding-left:25px;',    
                                    layout:'form',    
                                    labelWidth:60,    
                                    labelAlign:'right',    
                                    items:[    
                                        {    
                                            xtype:'box',//    
                                            id:'CategoryImage',    
                                            width:172,    
                                            height:120,    
                                            autoEl:{    
                                                tag:'image',    
                                                src:'tempFile/1.png'    
                                            }    
                                        }    
                                    ]    
                                })    
                            ]    
                                
                        })    
                ]    
                });    
                var tpProduct=new Ext.TabPanel({//很多时候我们可能是一个表单放在不同的tab中,为了方便提交和加载数据可以在tabpanel最外层放一个formpanel,但是显示就有问题,这个时候可以通过设置tabpanel高度和deferredRender、layoutOnTabChange两个属性来调整    
                    id:'tpProduct',    
                    deferredRender:false,//是否第一次显示就渲染所有tab(默认为true)    
                    layoutOnTabChange:true,    
                    //height:300,    
                    //autoTabs:true,    
                    activeTab:0,    
                    border:false,    
                    items:[    
                        pnProduct,    
                        pnCategory    
                    ]    
                });    
                var fpProduct=new Ext.FormPanel({//作为TabPanel的容器    
                    id:'fpProduct',    
                    reader: new Ext.data.JsonReader({    
                            successProperty: 'success',//后台返回的json中成功与否的字段名称    
                            root: 'info'//后台返回的json中,数据字段名称    
                        },    
                        [    
                            'ProductName',    
                            //'Discontinued',    
                            'QuantityPerUnit',    
                            'UnitPrice',    
                            'UnitsInStock',    
                            'CategoryID',    
                            'CategoryName',    
                            'Description',    
                            'SupplierID'    
                        ]    
                    ),     
                    items:[    
                        tpProduct    
                    ]    
                });    
                var winProductInfo=new Ext.Window({    
                        title:'商品信息',    
                        width:450,    
                        height:300,    
                        layout:'fit',    
                        closeAction:'hide',    
                        plain:true,//true则主体背景透明,false则和主体背景有些差别    
                        collapsible:true,//是否可收缩    
                        modal:true,//是否为模式窗体    
                        items:[    
                            fpProduct    
                        ],    
                        buttons:[//窗体按钮    
                            {    
                                text:'提交',    
                                handler:function(){    
                                    if(fpProduct.getForm().isValid()){    
                                        var record=grdProduct.getSelectionModel().getSelected();    
                                        fpProduct.getForm().submit({    
                                            method:'post',       
                                            url:'ProductInfo.aspx?type=updateProductInfo&productId='+record.get("ProductID"),    
                                            waitMsg:'数据更新中...',      
                                            success:function(){    
                                                stProduct.reload();    
                                                Ext.Msg.alert("系统提示","提交成功!");    
                                            },    
                                            failure:function(){    
                                                Ext.Msg.alert("系统提示","提交失败!");    
                                            }    
                                        });    
                                    }    
                                }    
                            },    
                            {    
                                text:'关闭',    
                                handler:function(){//点击时触发的事件    
                                    winProductInfo.hide();    
                                }    
                            }    
                        ]    
                });    
//              Ext.getCmp('tp').on("tabchange",function(tabPanel,tab){    
//                  Ext.Msg.alert("系统提示","Tab标题:"+tab.title);    
//              });    
                    
                grdProduct.on("rowdblclick",function(grid,rowIndex,e){    
                    var row=grid.getStore().getAt(rowIndex).data;    
                    //Ext.Msg.alert("系统提示","行:"+rowIndex+"  产品ID:"+row.ProductID);    
                    fpProduct.form.load({//利用load自动填充,注意表单控件字段一定要和json中一致    
                        url:'ProductInfo.aspx?type=getProductInfo&productId='+row.ProductID,    
                        waitMsg:'数据加载中...',    
                        success:function(){    
                            //alert("tempFile/"+row.CategoryName+".png");    
                            if(row.Discontinued=="是"){    
                                Ext.getCmp('DiscontinuedOneID').setValue(true);    
                            }else{    
                                Ext.getCmp('DiscontinuedTwoID').setValue(true);    
                            }    
                            Ext.getCmp('CategoryImage').getEl().dom.src="tempFile/"+row.CategoryName+".png";    
                        },    
                        failure:function(){    
                            Ext.Msg.alert("系统提示","数据加载失败!");    
                        }    
                    });    
                            
                    winProductInfo.show();    
                        
                });    
                    
                    
                var pnCenter=new Ext.Panel({    
                    id:'pnCenter',    
                    region:'center',    
                    items:[    
                        grdProduct    
                    ]    
                });    
                var vp=new Ext.Viewport({    
                    id:'vp',    
                    layout:'border',    
                    renderTo:Ext.getBody(),    
                    items:[    
                        pnNorth,    
                        pnCenter    
                    ]    
                });    
                        
                    
            });    


你可能感兴趣的:(Extjs 单独定义各组件的示例)