• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    Extjs单独定义各组件的实例代码

    发布者: 姬7089 | 发布时间: 2025-8-13 16:33| 查看数: 109| 评论数: 0|帖子模式

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

    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:"roductID"},{name:"roductName"},{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:"roductName",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: "roductInfo.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("roductID"),
    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
    ]
    });
    });

    来源:互联网
    免责声明:如果侵犯了您的权益,请联系站长(1277306191@qq.com),我们会及时删除侵权内容,谢谢合作!

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表