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


Posted in Javascript onJune 25, 2013

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

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 
] 
}); 
});
Javascript 相关文章推荐
用jquery实现等比例缩放图片效果插件
Jul 24 Javascript
window.open关于浏览器拦截问题分析及解决方法
Feb 05 Javascript
js如何获取file控件的完整路径具体实现代码
May 15 Javascript
JS实现新浪博客左侧的Blog管理菜单效果代码
Oct 22 Javascript
深入理解在JS中通过四种设置事件处理程序的方法
Mar 02 Javascript
node.js遍历目录的方法示例
Aug 01 Javascript
js canvas实现红包照片效果
Aug 21 Javascript
Jquery和CSS实现选择框重置按钮功能
Nov 08 jQuery
浅析JavaScript异步代码优化
Mar 18 Javascript
seajs和requirejs模块化简单案例分析
Aug 26 Javascript
js canvas实现星空连线背景特效
Nov 01 Javascript
手动实现vue2.0的双向数据绑定原理详解
Feb 06 Vue.js
SwfUpload在IE10上不出现上传按钮的解决方法
Jun 25 #Javascript
Jquery选择子控件"大于号"和" "区别介绍及使用示例
Jun 25 #Javascript
Jquery动态改变图片IMG的src地址示例
Jun 25 #Javascript
js实现快速分享功能(你的文章分享工具)
Jun 25 #Javascript
用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例
Jun 25 #Javascript
javascript实现div的显示和隐藏的小例子
Jun 25 #Javascript
js中复制行和删除行的操作实例
Jun 25 #Javascript
You might like
PHP中date与gmdate的区别及默认时区设置
2014/05/12 PHP
PHP 年月日的三级联动实例代码
2017/05/24 PHP
php正确输出json数据的实例讲解
2018/08/21 PHP
一个无限级XML绑定跨框架菜单(For IE)
2007/01/27 Javascript
仅img元素创建后不添加到文档中会执行onload事件的解决方法
2011/07/31 Javascript
简化版手机端照片预览组件
2015/04/13 Javascript
Vue.js一个文件对应一个组件实践
2016/10/27 Javascript
javaScript中定义类或对象的五种方式总结
2016/12/04 Javascript
利用JS测试目标网站的打开响应速度
2017/12/01 Javascript
Vue实现底部侧边工具栏的实例代码
2018/09/03 Javascript
在vue项目中正确使用iconfont的方法
2018/09/28 Javascript
vue使用原生js实现滚动页面跟踪导航高亮的示例代码
2018/10/25 Javascript
JavaScript实现Tab选项卡切换
2020/02/13 Javascript
详解如何在Javascript中使用Object.freeze()
2020/10/18 Javascript
如何在JavaScript中正确处理变量
2020/12/25 Javascript
[06:37]2014DOTA2国际邀请赛 昔日王者渴望重回巅峰
2014/07/12 DOTA
[02:43]DOTA2亚洲邀请赛场馆攻略——带你走进东方体育中心
2018/03/19 DOTA
Python3.2中的字符串函数学习总结
2015/04/23 Python
Python 脚本获取ES 存储容量的实例
2018/12/27 Python
为什么从Python 3.6开始字典有序并效率更高
2019/07/15 Python
Django连接数据库并实现读写分离过程解析
2019/11/13 Python
python实现ip地址的包含关系判断
2020/02/07 Python
opencv+python实现鼠标点击图像,输出该点的RGB和HSV值
2020/06/02 Python
使用html2canvas.js实现页面截图并显示或上传的示例代码
2018/12/18 HTML / CSS
高品质和独特的产品世界:Creations and Collections
2018/01/07 全球购物
英国最大的在线奢侈手表零售商:Jura Watches
2018/01/29 全球购物
酒店管理专业学生求职信
2013/09/27 职场文书
材料化学应届生求职信
2013/10/09 职场文书
上课睡觉检讨书
2014/01/28 职场文书
天鹅的故事教学反思
2014/02/04 职场文书
大学生就业策划书范文
2014/04/04 职场文书
领导班子四风对照检查材料思想汇报
2014/09/26 职场文书
安全学习心得体会范文
2016/01/18 职场文书
导游词之茶卡盐湖
2019/11/26 职场文书
浅析Redis Sentinel 与 Redis Cluster
2021/06/24 Redis
Nginx静态压缩和代码压缩提高访问速度详解
2022/05/30 Servers