博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

extjs4 模板值和模板

Posted on 2011-11-09 23:25  linFen  阅读(4972)  评论(1编辑  收藏  举报

1、append方法

Javascript代码 复制代码 收藏代码
  1. var tpl = new Ext.Template(//定义模板   
  2.     '<table  border=1 cellpadding=0 cellspacing = 0>',   
  3.     '<tr><td width=90>姓名</td><td width=90>{0}</td></tr>',   
  4.     '<tr><td>年龄</td><td>{1}</td></tr>',   
  5.     '<tr><td>性别</td><td>{2}</td></tr>',   
  6.     '</table>'  
  7. )   
  8. //模板值和模板进行组合并将新生成的节点插入到id为'tpl-table'的元素中   
  9. tpl.append('tpl-table',['小王',25,'男']);  
var tpl = new Ext.Template(//定义模板
	'<table  border=1 cellpadding=0 cellspacing = 0>',
	'<tr><td width=90>姓名</td><td width=90>{0}</td></tr>',
	'<tr><td>年龄</td><td>{1}</td></tr>',
	'<tr><td>性别</td><td>{2}</td></tr>',
	'</table>'
)
//模板值和模板进行组合并将新生成的节点插入到id为'tpl-table'的元素中
tpl.append('tpl-table',['小王',25,'男']);



2、overwrite方法:

Javascript代码 复制代码 收藏代码
  1. var tpl = new Ext.Template(//定义模板   
  2.     '<table  border=1 cellpadding=0 cellspacing = 0>',   
  3.     '<tr><td width=90>姓名</td><td width=90>{name}</td></tr>',   
  4.     '<tr><td>年龄</td><td>{age}</td></tr>',   
  5.     '<tr><td>性别</td><td>{sex}</td></tr>',   
  6.     '</table>'  
  7. )   
  8. //模板值和模板进行组合并将新生成的节点插入到id为'tpl-table'的元素中   
  9. tpl.overwrite('tpl-table',{name:'小王',age:25,sex:'男'});  
var tpl = new Ext.Template(//定义模板
	'<table  border=1 cellpadding=0 cellspacing = 0>',
	'<tr><td width=90>姓名</td><td width=90>{name}</td></tr>',
	'<tr><td>年龄</td><td>{age}</td></tr>',
	'<tr><td>性别</td><td>{sex}</td></tr>',
	'</table>'
)
//模板值和模板进行组合并将新生成的节点插入到id为'tpl-table'的元素中
tpl.overwrite('tpl-table',{name:'小王',age:25,sex:'男'});



3、模板中使用格式化函数:

Javascript代码 复制代码 收藏代码
  1. //定义模板,并指定模板数据的格式化函数   
  2. var tpl = new Ext.Template([   
  3.     '<table border=1 cellpadding=0 cellspacing = 0>',   
  4.     '<tr><td width=90>员工姓名</td>',   
  5.     //{userName:capitalize}使用标准字符串格式化函数,字符串首字母大写   
  6.     '<td width=120>{userName:capitalize}</td></tr>',   
  7.     '<tr><td width=90>工作日期</td>',   
  8.     //{WorkDate:this.cusFormat()}使用自定义格式化函数   
  9.     '<td width=120>{WorkDate:this.cusFormat()}</td></tr>',   
  10.     '</table>'  
  11. ]);   
  12. //定义模板数据   
  13. var tplData = {   
  14.     userName : 'tom',   
  15.     WorkDate : new Date(2002,7,1)   
  16. }   
  17. //模板的自定义格式化函数   
  18. tpl.cusFormat = function(date,o){   
  19.     return Ext.Date.format(date,'Y年m月d');   
  20. }   
  21. //模板值和模板进行组合并将新生成的节点插入到id为'tpl-table'的元素中   
  22. tpl.append('tpl-table',tplData);  
//定义模板,并指定模板数据的格式化函数
var tpl = new Ext.Template([
	'<table border=1 cellpadding=0 cellspacing = 0>',
	'<tr><td width=90>员工姓名</td>',
	//{userName:capitalize}使用标准字符串格式化函数,字符串首字母大写
	'<td width=120>{userName:capitalize}</td></tr>',
	'<tr><td width=90>工作日期</td>',
	//{WorkDate:this.cusFormat()}使用自定义格式化函数
	'<td width=120>{WorkDate:this.cusFormat()}</td></tr>',
	'</table>'
]);
//定义模板数据
var tplData = {
	userName : 'tom',
	WorkDate : new Date(2002,7,1)
}
//模板的自定义格式化函数
tpl.cusFormat = function(date,o){
	return Ext.Date.format(date,'Y年m月d');
}
//模板值和模板进行组合并将新生成的节点插入到id为'tpl-table'的元素中
tpl.append('tpl-table',tplData);



4、使用自定义格式化函数解析多层json对象

Javascript代码 复制代码 收藏代码
  1. //定义模板,并指定模板数据的格式化函数   
  2. var tpl = new Ext.Template(   
  3.     '<table border=1 cellpadding=0 cellspacing = 0>',   
  4.     '<tr><td width=90 >姓名</td>',   
  5.     '<td width=120>{name}</td></tr>',   
  6.     '<tr><td width=90 >年龄</td>',   
  7.     '<td width=120>{age}</td></tr>',   
  8.     '<tr><td width=90 >身高</td>',   
  9.     '<td width=120>{stature:this.parseJson}</td></tr>',   
  10.     '</table>'  
  11. );   
  12. //定义模板数据   
  13. var tplData = {   
  14.     name : 'tom',   
  15.     age : 24,   
  16.     stature : {   
  17.         num : 170,   
  18.         unit : 'cm'  
  19.     }   
  20. }   
  21. //通过自定义格式化函数解析json对象   
  22. tpl.parseJson = function(json){   
  23.     return json.num + json.unit;   
  24. }   
  25. //模板值和模板进行组合并将新生成的节点插入到id为'tpl-table'的元素中   
  26. tpl.append('tpl-table',tplData);  
//定义模板,并指定模板数据的格式化函数
var tpl = new Ext.Template(
	'<table border=1 cellpadding=0 cellspacing = 0>',
	'<tr><td width=90 >姓名</td>',
	'<td width=120>{name}</td></tr>',
	'<tr><td width=90 >年龄</td>',
	'<td width=120>{age}</td></tr>',
	'<tr><td width=90 >身高</td>',
	'<td width=120>{stature:this.parseJson}</td></tr>',
	'</table>'
);
//定义模板数据
var tplData = {
	name : 'tom',
	age : 24,
	stature : {
		num : 170,
		unit : 'cm'
	}
}
//通过自定义格式化函数解析json对象
tpl.parseJson = function(json){
	return json.num + json.unit;
}
//模板值和模板进行组合并将新生成的节点插入到id为'tpl-table'的元素中
tpl.append('tpl-table',tplData);



5、使用tpl标签和for运算符

Javascript代码 复制代码 收藏代码
  1. //定义模板,使用tpl标签和for运算符   
  2. var tpl = new Ext.XTemplate(   
  3.     '<table border=1 cellpadding=0 cellspacing = 0>',   
  4.     '<tr><td width=90 >姓名</td><td width=90 >年龄</td></tr>',   
  5.     '<tpl for=".">',   
  6.     '<tr><td>{name}</td><td>{age}</td></tr>',   
  7.     '</tpl>',   
  8.     '</table>'  
  9. );   
  10. //定义模板数据   
  11. var tplData = [   
  12.     {name:'张三',age:20},   
  13.     {name:'李四',age:25},   
  14.     {name:'王五',age:27},   
  15.     {name:'赵六',age:26}   
  16. ]   
  17. //模板值和模板进行组合并将新生成的节点插入到id为'tpl-table'的元素中   
  18. tpl.append('tpl-table',tplData);  
//定义模板,使用tpl标签和for运算符
var tpl = new Ext.XTemplate(
	'<table border=1 cellpadding=0 cellspacing = 0>',
	'<tr><td width=90 >姓名</td><td width=90 >年龄</td></tr>',
	'<tpl for=".">',
	'<tr><td>{name}</td><td>{age}</td></tr>',
	'</tpl>',
	'</table>'
);
//定义模板数据
var tplData = [
	{name:'张三',age:20},
	{name:'李四',age:25},
	{name:'王五',age:27},
	{name:'赵六',age:26}
]
//模板值和模板进行组合并将新生成的节点插入到id为'tpl-table'的元素中
tpl.append('tpl-table',tplData);



6、使用parent在子模板中访问父对象

Javascript代码 复制代码 收藏代码
  1. //定义模板,使用parent在子模板中访问父对象   
  2. var tpl = new Ext.XTemplate(   
  3.     '<table border=1 cellpadding=0 cellspacing = 0>',   
  4.     '<tr><td width=90 >姓名</td><td width=90 >年龄</td><td width=90 >公司</td></tr>',   
  5.     '<tpl for="emps">',   
  6.     '<tr><td>{name}</td><td>{age}</td><td>{parent.companyName}</td></tr>',   
  7.     '</tpl>',   
  8.     '</table>'  
  9. );   
  10. //定义模板数据   
  11. var tplData = {   
  12.     companyName : 'ACB公司',   
  13.     emps:[   
  14.         {name:'张三',age:20},   
  15.         {name:'李四',age:25},   
  16.         {name:'王五',age:27},   
  17.         {name:'赵六',age:26}   
  18.     ]   
  19. }   
  20. //模板值和模板进行组合并将新生成的节点插入到id为'tpl-table'的元素中   
  21. tpl.append('tpl-table',tplData);  
//定义模板,使用parent在子模板中访问父对象
var tpl = new Ext.XTemplate(
	'<table border=1 cellpadding=0 cellspacing = 0>',
	'<tr><td width=90 >姓名</td><td width=90 >年龄</td><td width=90 >公司</td></tr>',
	'<tpl for="emps">',
	'<tr><td>{name}</td><td>{age}</td><td>{parent.companyName}</td></tr>',
	'</tpl>',
	'</table>'
);
//定义模板数据
var tplData = {
	companyName : 'ACB公司',
	emps:[
		{name:'张三',age:20},
		{name:'李四',age:25},
		{name:'王五',age:27},
		{name:'赵六',age:26}
	]
}
//模板值和模板进行组合并将新生成的节点插入到id为'tpl-table'的元素中
tpl.append('tpl-table',tplData);



7、数组索引与简单数学运算

Javascript代码 复制代码 收藏代码
  1. //定义模板,数组索引与简单数学运算   
  2. var tpl = new Ext.XTemplate(   
  3.     '<table border=1 cellpadding=0 cellspacing = 0>',   
  4.     '<tr><td>序号</td><td width=90 >姓名</td><td width=90 >工资</td></tr>',   
  5.     '<tpl for=".">',   
  6.     '<tr><td>{#}</td><td>{name}</td><td>{wage * .9}</td></tr>',   
  7.     '</tpl>',   
  8.     '</table>'  
  9. );   
  10. //定义模板数据   
  11. var tplData = [   
  12.         {name : '张三',wage : 1000},   
  13.         {name : '李四',wage : 1200},   
  14.         {name : '王五',wage : 900},   
  15.         {name : '赵六',wage : 1500}   
  16.     ]   
  17. //模板值和模板进行组合并将新生成的节点插入到id为'tpl-table'的元素中   
  18. tpl.append('tpl-table',tplData);  
//定义模板,数组索引与简单数学运算
var tpl = new Ext.XTemplate(
	'<table border=1 cellpadding=0 cellspacing = 0>',
	'<tr><td>序号</td><td width=90 >姓名</td><td width=90 >工资</td></tr>',
	'<tpl for=".">',
	'<tr><td>{#}</td><td>{name}</td><td>{wage * .9}</td></tr>',
	'</tpl>',
	'</table>'
);
//定义模板数据
var tplData = [
		{name : '张三',wage : 1000},
		{name : '李四',wage : 1200},
		{name : '王五',wage : 900},
		{name : '赵六',wage : 1500}
	]
//模板值和模板进行组合并将新生成的节点插入到id为'tpl-table'的元素中
tpl.append('tpl-table',tplData);



8、自动渲染简单数组

Javascript代码 复制代码 收藏代码
  1. //定义模板,自动渲染简单数组   
  2. var tpl = new Ext.XTemplate(   
  3.     '<table border=1 cellpadding=0 cellspacing = 0>',   
  4.     '<tr><td>序号</td><td width=90 >姓名</td></tr>',   
  5.     '<tpl for=".">',   
  6.     '<tr><td>{#}</td><td>{.}</td></tr>',   
  7.     '</tpl>',   
  8.     '</table>'  
  9. );   
  10. //定义模板数据   
  11. var tplData = ['张三','李四','王五','赵六']   
  12. //模板值和模板进行组合并将新生成的节点插入到id为'tpl-table'的元素中   
  13. tpl.append('tpl-table',tplData);  
//定义模板,自动渲染简单数组
var tpl = new Ext.XTemplate(
	'<table border=1 cellpadding=0 cellspacing = 0>',
	'<tr><td>序号</td><td width=90 >姓名</td></tr>',
	'<tpl for=".">',
	'<tr><td>{#}</td><td>{.}</td></tr>',
	'</tpl>',
	'</table>'
);
//定义模板数据
var tplData = ['张三','李四','王五','赵六']
//模板值和模板进行组合并将新生成的节点插入到id为'tpl-table'的元素中
tpl.append('tpl-table',tplData);



9、基本的条件逻辑判断

Javascript代码 复制代码 收藏代码
  1. //定义模板,基本的条件逻辑判断   
  2. var tpl = new Ext.XTemplate(   
  3.     '<table border=1 cellpadding=0 cellspacing = 0>',   
  4.     '<tr><td>序号</td><td width=90 >姓名</td><td width=90 >工资</td></tr>',   
  5.     '<tpl for=".">',   
  6.     '<tpl if="wage &gt; 1000">',   
  7.     '<tr><td>{#}</td><td>{name}</td><td>{wage}</td></tr>',   
  8.     '</tpl>',   
  9.     '</tpl>',   
  10.     '</table>'  
  11. );   
  12. //定义模板数据   
  13. var tplData = [   
  14.         {name : '张三',wage : 1000},   
  15.         {name : '李四',wage : 1200},   
  16.         {name : '王五',wage : 900},   
  17.         {name : '赵六',wage : 1500}   
  18.     ]   
  19. //模板值和模板进行组合并将新生成的节点插入到id为'tpl-table'的元素中   
  20. tpl.append('tpl-table',tplData);  
//定义模板,基本的条件逻辑判断
var tpl = new Ext.XTemplate(
	'<table border=1 cellpadding=0 cellspacing = 0>',
	'<tr><td>序号</td><td width=90 >姓名</td><td width=90 >工资</td></tr>',
	'<tpl for=".">',
	'<tpl if="wage &gt; 1000">',
	'<tr><td>{#}</td><td>{name}</td><td>{wage}</td></tr>',
	'</tpl>',
	'</tpl>',
	'</table>'
);
//定义模板数据
var tplData = [
		{name : '张三',wage : 1000},
		{name : '李四',wage : 1200},
		{name : '王五',wage : 900},
		{name : '赵六',wage : 1500}
	]
//模板值和模板进行组合并将新生成的节点插入到id为'tpl-table'的元素中
tpl.append('tpl-table',tplData);



10、在模板中执行任意代码

Css代码 复制代码 收藏代码
  1. <style type="text/css">   
  2.     .even { background-color: #CCFFFF; }   
  3.     .odd { background-color: #FFFFFF; }   
  4.     .title {text-align: center;}   
  5.   </style>  
<style type="text/css">
	.even { background-color: #CCFFFF; }
	.odd { background-color: #FFFFFF; }
	.title {text-align: center;}
  </style>
Javascript代码 复制代码 收藏代码
  1. //定义模板,在模板中执行任意代码   
  2. var tpl = new Ext.XTemplate(   
  3.     '<table border=1 cellpadding=0 cellspacing = 0 class=title>',   
  4.     '<tr><td>序号</td><td width=90 >姓名</td><td width=90 >工资</td><td width=90 >奖金</td></tr>',   
  5.     '<tpl for="emps">',   
  6.     '<tr class="{[xindex % 2 == 0 ? "even" : "odd"]}">',   
  7.     '<td>{[xindex]}</td><td>{[values.name]}</td>',   
  8.     '<td>{[values.wage * parent.per]}</td>',   
  9.     '<td>{[Math.round(values.wage * parent.per / xcount)]}</td></tr>',   
  10.     '</tpl>',   
  11.     '<tr><td>发薪时间</td><td colspan=3>{[fm.date(new Date,"Y年m月d日")]}</td></tr>',   
  12.     '<tr><td>工资总计</td><td colspan=3>{[this.avgWage(values)]}</td></tr>',   
  13.     '</table>'  
  14. );   
  15. //模板的自定义格式化函数,用于计算工资总计   
  16. tpl.avgWage = function (o) {   
  17.     var sum = 0;   
  18.     var length = o.emps.length;   
  19.     for(var i = 0 ; i <length ; i++){   
  20.         sum += o.emps[i].wage;   
  21.     }   
  22.     return sum * o.per;   
  23. }   
  24. //定义模板数据,per表示发薪比例,wage表示标准工资   
  25. var tplData = {   
  26.     per : 0.9,   
  27.     emps : [   
  28.         {name : '张三',wage : 1000},   
  29.         {name : '李四',wage : 1200},   
  30.         {name : '王五',wage : 900},   
  31.         {name : '赵六',wage : 1500}   
  32.     ]   
  33. }   
  34. //模板值和模板进行组合并将新生成的节点插入到id为'tpl-table'的元素中   
  35. tpl.append('tpl-table',tplData);  
//定义模板,在模板中执行任意代码
var tpl = new Ext.XTemplate(
	'<table border=1 cellpadding=0 cellspacing = 0 class="title">',
	'<tr><td>序号</td><td width=90 >姓名</td><td width=90 >工资</td><td width=90 >奖金</td></tr>',
	'<tpl for="emps">',
	'<tr class="{[xindex % 2 == 0 ? "even" : "odd"]}">',
	'<td>{[xindex]}</td><td>{[values.name]}</td>',
	'<td>{[values.wage * parent.per]}</td>',
	'<td>{[Math.round(values.wage * parent.per / xcount)]}</td></tr>',
	'</tpl>',
	'<tr><td>发薪时间</td><td colspan=3>{[fm.date(new Date,"Y年m月d日")]}</td></tr>',
	'<tr><td>工资总计</td><td colspan=3>{[this.avgWage(values)]}</td></tr>',
	'</table>'
);
//模板的自定义格式化函数,用于计算工资总计
tpl.avgWage = function (o) {
	var sum = 0;
	var length = o.emps.length;
	for(var i = 0 ; i <length ; i++){
		sum += o.emps[i].wage;
	}
	return sum * o.per;
}
//定义模板数据,per表示发薪比例,wage表示标准工资
var tplData = {
	per : 0.9,
	emps : [
		{name : '张三',wage : 1000},
		{name : '李四',wage : 1200},
		{name : '王五',wage : 900},
		{name : '赵六',wage : 1500}
	]
}
//模板值和模板进行组合并将新生成的节点插入到id为'tpl-table'的元素中
tpl.append('tpl-table',tplData);



11、使用模板成员函数

Javascript代码 复制代码 收藏代码
  1. //定义模板,在模板中使用模板成员函数   
  2. var tpl = new Ext.XTemplate(   
  3.     '<table border=1 cellpadding=0 cellspacing = 0 class=title>',   
  4.     '<tr><td width=90 >姓名</td><td width=90 >工资</td></tr>',   
  5.     '<tpl for=".">',   
  6.     '<tpl if="this.check(wage)">',   
  7.     '<tr><td>{name}</td>',   
  8.     '<td>{[this.format(values.wage)]}</td>',   
  9.     '</tpl></tpl>',   
  10.     '</table>',   
  11.     {   
  12.         //定义模板成员函数   
  13.         check : function(wage) {   
  14.             if(wage > 1000){   
  15.                 return true;   
  16.             }else {   
  17.                 return false  
  18.             }   
  19.         },   
  20.         //定义模板成员函数   
  21.         format : function(wage) {   
  22.             if(wage > 1300){   
  23.                 return '<font color=red>'+wage+'</font>';   
  24.             }else {   
  25.                 return '<font color=blue>'+wage+'</font>';   
  26.             }   
  27.                
  28.         }   
  29.     }   
  30. );   
  31. //定义模板数据,per表示发薪比例,wage表示标准工资   
  32. var tplData = [   
  33.         {name : '张三',wage : 1000},   
  34.         {name : '李四',wage : 1200},   
  35.         {name : '王五',wage : 900},   
  36.         {name : '赵六',wage : 1500}   
  37.     ]   
  38. //模板值和模板进行组合并将新生成的节点插入到id为'tpl-table'的元素中   
  39. tpl.append('tpl-table',tplData);  
//定义模板,在模板中使用模板成员函数
var tpl = new Ext.XTemplate(
	'<table border=1 cellpadding=0 cellspacing = 0 class="title">',
	'<tr><td width=90 >姓名</td><td width=90 >工资</td></tr>',
	'<tpl for=".">',
	'<tpl if="this.check(wage)">',
	'<tr><td>{name}</td>',
	'<td>{[this.format(values.wage)]}</td>',
	'</tpl></tpl>',
	'</table>',
	{
		//定义模板成员函数
		check : function(wage) {
			if(wage > 1000){
				return true;
			}else {
				return false
			}
		},
		//定义模板成员函数
		format : function(wage) {
			if(wage > 1300){
				return '<font color=red>'+wage+'</font>';
			}else {
				return '<font color=blue>'+wage+'</font>';
			}
			
		}
	}
);
//定义模板数据,per表示发薪比例,wage表示标准工资
var tplData = [
		{name : '张三',wage : 1000},
		{name : '李四',wage : 1200},
		{name : '王五',wage : 900},
		{name : '赵六',wage : 1500}
	]
//模板值和模板进行组合并将新生成的节点插入到id为'tpl-table'的元素中
tpl.append('tpl-table',tplData);



12、在Extjs组件中使用模板

Css代码 复制代码 收藏代码
  1. <style type="text/css">   
  2.     .even { background-color: #CCFFFF; }   
  3.     .odd { background-color: #FFFFFF; }   
  4. </style>  
<style type="text/css">
	.even { background-color: #CCFFFF; }
	.odd { background-color: #FFFFFF; }
</style>
Javascript代码 复制代码 收藏代码
  1. //定义组合框模板   
  2. var itemTpl = new Ext.XTemplate(   
  3.     '<div class="x-combo-list-item {[xindex % 2 == 0 ? "even" : "odd"]}">',   
  4.     '{#} :{[this.check(values)]}</div>',   
  5.     {   
  6.         check : function (values) {   
  7.             if(values.value > 2 ){   
  8.                 return "<font color=red>"+values.item+"</font>";   
  9.             }else {   
  10.                 return "<font color=blue>"+values.item+"</font>";   
  11.             }   
  12.         }   
  13.     }   
  14. );   
  15. //创建数据模型   
  16. Ext.regModel('ItemInfo', {   
  17.     fields: ['item','value']   
  18. });   
  19.   
  20. new Ext.form.Panel({   
  21.     title:'在Extjs组件中使用模板',   
  22.     renderTo: Ext.getBody(),   
  23.     bodyPadding: 5,   
  24.     height : 100,   
  25.     frame : true,   
  26.     width : 350,   
  27.     items : [{   
  28.         xtype : 'combo',   
  29.         fieldLabel:'邮政编码',   
  30.         displayField:'item',   
  31.         valueField:'value',   
  32.         labelSeparator :':',//分隔符   
  33.         listConfig : {   
  34.             itemTpl : itemTpl   
  35.         },   
  36.         editable : false,   
  37.         queryMode: 'local',   
  38.         triggerAction: 'all',   
  39.         store : new Ext.data.Store({   
  40.             model : 'ItemInfo',   
  41.             fields: ['item','value'],   
  42.             data : [{item:'条目1',value:1},   
  43.                     {item:'条目2',value:2},   
  44.                     {item:'条目3',value:3},   
  45.                     {item:'条目4',value:4},   
  46.                     {item:'条目5',value:5},   
  47.                     {item:'条目6',value:6}]   
  48.         })   
  49.     }]   
  50. });  
//定义组合框模板
var itemTpl = new Ext.XTemplate(
	'<div class="x-combo-list-item {[xindex % 2 == 0 ? "even" : "odd"]}">',
	'{#} :{[this.check(values)]}</div>',
	{
		check : function (values) {
			if(values.value > 2 ){
				return "<font color=red>"+values.item+"</font>";
			}else {
				return "<font color=blue>"+values.item+"</font>";
			}
		}
	}
);
//创建数据模型
Ext.regModel('ItemInfo', {
    fields: ['item','value']
});

new Ext.form.Panel({
	title:'在Extjs组件中使用模板',
	renderTo: Ext.getBody(),
	bodyPadding: 5,
	height : 100,
	frame : true,
	width : 350,
	items : [{
		xtype : 'combo',
		fieldLabel:'邮政编码',
		displayField:'item',
		valueField:'value',
		labelSeparator :':',//分隔符
		listConfig : {
			itemTpl : itemTpl
		},
		editable : false,
		queryMode: 'local',
		triggerAction: 'all',
		store : new Ext.data.Store({
			model : 'ItemInfo',
			fields: ['item','value'],
			data : [{item:'条目1',value:1},
			        {item:'条目2',value:2},
			        {item:'条目3',value:3},
			        {item:'条目4',value:4},
			        {item:'条目5',value:5},
			        {item:'条目6',value:6}]
		})
	}]
});



13、Ext.view.View示例

Javascript代码 复制代码 收藏代码
  1. var inputForm = Ext.create('Ext.form.Panel',{   
  2. bodyPadding: 5,   
  3. width : 490,   
  4. flex : 2,   
  5. fieldDefaults:{//统一设置表单字段默认属性   
  6.     labelSeparator :':',//分隔符   
  7.     labelWidth : 60,//标签宽度   
  8.     width : 150,//字段宽度   
  9.     msgTarget : 'side',   
  10.     allowBlank : false,   
  11.     labelAlign : 'right'  
  12. },   
  13. layout: {//设置容器字段布局   
  14.     type: 'hbox',   
  15.     align: 'middle'//垂直居中   
  16. },   
  17. defaultType: 'textfield',//设置表单字段的默认类型   
  18. items:[{   
  19.     fieldLabel:'产品名称',   
  20.     name : 'productName'  
  21. },{   
  22.     fieldLabel:'数量',   
  23.     xtype : 'numberfield',   
  24.     name : 'productNum'  
  25. },{   
  26.     fieldLabel:'金额',   
  27.     xtype : 'numberfield',   
  28.     name : 'productPrice'  
  29. }],   
  30. fbar : [{   
  31.     text : '添加',   
  32.     handler : function(){   
  33.         if(inputForm.getForm().isValid()){   
  34.             var data = inputForm.getForm().getValues();   
  35.             var product = Ext.ModelMgr.create(data, 'ProductInfo');   
  36.                 productStore.add(product);   
  37.                 inputForm.getForm().reset();   
  38.             }   
  39.         }   
  40.     }]   
  41. });   
  42. //创建数据模型   
  43. Ext.regModel('ProductInfo', {   
  44. fields: ['productName','productNum','productPrice']   
  45. });   
  46. //创建产品数据源   
  47. var productStore = Ext.create('Ext.data.Store',{   
  48. autoLoad : true,   
  49. data : [],   
  50. model : 'ProductInfo',   
  51. proxy: {   
  52.     type: 'memory',   
  53.     reader: {   
  54.         type: 'json',   
  55.         root: 'datas'  
  56.         }   
  57.     }   
  58. });   
  59. //定义模板   
  60. var productTpl = new Ext.XTemplate(   
  61.     '<table border=1 cellspacing=0 cellpadding=0 width=100%>',   
  62. '<tr><td width=160>产品名称</td><td width=75>数量</td><td width=75>金额</td></tr>',   
  63. '<tpl for=".">',   
  64. '<tr><td>{productName}</td><td>{productNum}</td><td>{productPrice}</td></tr>',   
  65. '</tpl>',   
  66. '</table>'  
  67. );   
  68. //产品数据视图   
  69. var productView = Ext.create('Ext.view.View',{   
  70. store: productStore,   
  71. tpl: productTpl,   
  72. deferEmptyText : false,   
  73. itemSelector:'div.thumb-wrap',   
  74. emptyText: '请录入商品'  
  75. });   
  76. //产品面板   
  77. var productViewPanel = Ext.create('Ext.panel.Panel',{   
  78. autoScroll:true,   
  79. width : 490,   
  80. flex : 3,   
  81. layout : 'fit',   
  82. bodyStyle:'background-color:#FFFFFF',   
  83.     items: productView   
  84. });   
  85. Ext.create('Ext.panel.Panel',{   
  86. renderTo: document.body,   
  87. frame:true,   
  88. width : 500,   
  89. height: 200,   
  90. layout:'vbox',   
  91. title:'产品录入',   
  92.     items: [inputForm, productViewPanel]   
  93. });