ExtJs 动态RadioGroup的子项 [ Ext | RadioGroup | items ]
前言
ExtJs的RadioGroup在3.0中正式的放在了Ext.form命名空间下面,也是常用的控件之一,本文将实现简化该元件并动态指定子项。
版本
ext-3.0.0
正文
1. 实现代码
//Ext.form.RadioGroup扩展
Ext.override(Ext.form.RadioGroup, {
getItems:function(){
return this.items;
},
setItems:function(data){
this.items = data;
}
});
function RadioGroup(_name,fLable,_items,_columns)
{
/// <summary>
///
/// 作 者:农民伯伯
/// 邮 箱:over140@gmail.com
/// 博 客:http://over140.cnblogs.com/
/// 时 间:2009-7-23
/// 描 述:Ext.form.RadioGroup封装
///
/// </summary>
/// <param name="_name">name</param>
/// <param name="fLable">fieldLabel</param>
/// <param name="_items">items</param>
/// <param name="_columns">columns</param>
/// <returns>Ext.form.DateField</returns>
var rg = new Ext.form.RadioGroup({
name:_name,
fieldLabel:fLable
});
if(_columns!=null)
rg.columns = _columns;
//动态绑定
var items = new Array();
if(_items !=null){
for(var i = 0 ;i<_items.length; i++)
{
items[i] = {};
items[i].name = _name;
items[i].boxLabel = _items[i][0];
items[i].inputValue = _items[i][1];
if(_items[i].length > 2)
items[i].checked = _items[i][2];
}
}
rg.setItems(items);
return rg;
}
代码说明:Ext.override(Ext.form.RadioGroup, {
getItems:function(){
return this.items;
},
setItems:function(data){
this.items = data;
}
});
function RadioGroup(_name,fLable,_items,_columns)
{
/// <summary>
///
/// 作 者:农民伯伯
/// 邮 箱:over140@gmail.com
/// 博 客:http://over140.cnblogs.com/
/// 时 间:2009-7-23
/// 描 述:Ext.form.RadioGroup封装
///
/// </summary>
/// <param name="_name">name</param>
/// <param name="fLable">fieldLabel</param>
/// <param name="_items">items</param>
/// <param name="_columns">columns</param>
/// <returns>Ext.form.DateField</returns>
var rg = new Ext.form.RadioGroup({
name:_name,
fieldLabel:fLable
});
if(_columns!=null)
rg.columns = _columns;
//动态绑定
var items = new Array();
if(_items !=null){
for(var i = 0 ;i<_items.length; i++)
{
items[i] = {};
items[i].name = _name;
items[i].boxLabel = _items[i][0];
items[i].inputValue = _items[i][1];
if(_items[i].length > 2)
items[i].checked = _items[i][2];
}
}
rg.setItems(items);
return rg;
}
a). 首先需要将RadioGroup的items属性通过拓展暴露出来。
b). 需要注意动态绑定子项部分的代码。
2. 使用代码
var pnlZB = new Ext.FormPanel({
layout: 'form',
frame:true,
buttonAlign:'center',
bodyStyle:'padding:20px',
defaults:{
width:200,
allowBlank:false,
blankText:'该项不能为空!'
},
labelAlign:'right',
labelWidth:150,
items:[
new RadioGroup('Gender','性别',[['男','男',true],['女','女']])
],
buttons:[{
text:"提 交",
handler:function(){
alert(Ext.encode(pnlZB.form.getValues()));
}
},{
text:"取 消",
handler:function(){
pnlZB.form.reset();
}
}]
});
代码说明:layout: 'form',
frame:true,
buttonAlign:'center',
bodyStyle:'padding:20px',
defaults:{
width:200,
allowBlank:false,
blankText:'该项不能为空!'
},
labelAlign:'right',
labelWidth:150,
items:[
new RadioGroup('Gender','性别',[['男','男',true],['女','女']])
],
buttons:[{
text:"提 交",
handler:function(){
alert(Ext.encode(pnlZB.form.getValues()));
}
},{
text:"取 消",
handler:function(){
pnlZB.form.reset();
}
}]
});
a). 如果要取选择的值,可以直接RadioGroup对象的实例.getValue().inputValue就能取到了。
补充
1. 2009-7-28 如果出现js错误,比如setItems为空,请将Ext.override(Ext.form.RadioGroup...部分代码放入函数RadioGroup内,放在setItems前面就行;如果还报prototype错误,请将adapter\prototype\ext-prototype-adapter.js也加入工程,目录同样。
结束语
Ext很好,但动辄上百行JS代码,所以有空就做点这方面的简化工作,能节省不少后期工作量已经重复设置属性出错的几率。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!