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;
}
复制代码
    代码说明:
      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();
                    }
                }]
            });
复制代码
  代码说明:
    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代码,所以有空就做点这方面的简化工作,能节省不少后期工作量已经重复设置属性出错的几率。


本博相关的文章

1.   ExtJs Grid 合计 [Ext | GridPanel | GridSummary ]
转载:http://www.cnblogs.com/over140/archive/2009/07/23/1529451.html

目录
相关文章
swagger接口需要权限验证解决方案
当我们在使用swagger的情况下,经常会遇到需要授权或者请求带有token才可以访问接口,这里我们就是解决授权问题。
646 0
|
运维 Java 程序员
Spring5深入浅出篇:基于注解实现的AOP
# Spring5 AOP 深入理解:注解实现 本文介绍了基于注解的AOP编程步骤,包括原始对象、额外功能、切点和组装切面。步骤1-3旨在构建切面,与传统AOP相似。示例代码展示了如何使用`@Around`定义切面和执行逻辑。配置中,通过`@Aspect`和`@Around`注解定义切点,并在Spring配置中启用AOP自动代理。 进一步讨论了切点复用,避免重复代码以提高代码维护性。通过`@Pointcut`定义通用切点表达式,然后在多个通知中引用。此外,解释了AOP底层实现的两种动态代理方式:JDK动态代理和Cglib字节码增强,默认使用JDK,可通过配置切换到Cglib
|
搜索推荐 API
淘宝商品数据洞察:解锁精准营销新策略
在快速变化的商业环境中,高效的营销策略对企业至关重要。通过API获取淘宝APP的商品细节数据,企业可以精准分析产品特性、强化卖点,并制定灵活的价格策略。利用用户画像实现个性化营销,选择最佳渠道并优化内容,从而提升品牌影响力。这一方法不仅帮助企业抓住目标消费者,还能增强市场竞争力,促进长期发展。
|
NoSQL 关系型数据库 BI
记录一次MySQL+Redis实现优化百万数据统计的方式
【10月更文挑战第13天】 在处理百万级数据的统计时,传统的单体数据库往往力不从心,这时结合使用MySQL和Redis可以显著提升性能。以下是一次实际优化案例的详细记录。
630 1
|
存储 安全 网络安全
云计算浪潮之下的网络安全策略
【9月更文挑战第31天】随着数字化转型的加速,云计算已成为企业存储和处理数据的首选平台。然而,云服务的广泛应用也带来了前所未有的网络安全挑战。本文旨在深入分析云计算环境中的网络安全风险,并提出有效的防御策略。通过介绍云计算的基本概念、服务模型及其与网络安全的关系,文章探讨了云环境下的安全威胁和应对措施,包括加密技术、访问控制、身份认证等关键技术的应用。此外,还将分享几个保护云计算环境的实践案例,以期为企业在享受云计算便利的同时,提供坚实的网络安全保障。
126 4
|
Java 编译器 Scala
IDEA上的Scala环境搭建
本文指导如何搭建Scala开发环境。首先,安装Scala编译器`scala-2.12.10.msi`,通过DOS窗口验证安装成功。然后,在IDEA中,安装Scala插件,创建Maven工程,删除默认包,新建Scala源码包,并在其中创建Scala Object类。接着,配置项目结构,添加Scala SDK,确保Maven、Language Level和Compiler的bytecode版本设置正确。最后,编写并测试基本的Scala代码。
854 2
IDEA上的Scala环境搭建
|
存储 SQL 关系型数据库
深入解析MySQL事务机制和锁机制
深入解析MySQL事务机制和锁机制
|
域名解析 负载均衡 网络协议
《打造不宕机的电商网站:揭秘Bind和Nginx的负载均衡策略》
【8月更文挑战第13天】在互联网技术快速演进的当下,确保web服务的高可用性和高性能至关重要。本文通过案例分析,探讨如何利用Bind和Nginx实现高效的负载均衡。以一家大型电商网站为例,面对每日上百万次的用户访问请求,通过配置Bind DNS服务器根据策略将域名解析至不同IP地址,并借助Nginx作为反向代理和负载均衡器,将请求按需分发至多个应用服务器,实现了服务的稳定性和高效性。此方案不仅提升了网站的扩展性和可靠性,还增强了对网络流量的控制能力,适用于处理巨大用户量和数据量的服务。
280 0
|
Java 数据库连接 数据库
告别繁琐 SQL!Hibernate 入门指南带你轻松玩转 ORM,解锁高效数据库操作新姿势
【8月更文挑战第31天】Hibernate 是一款流行的 Java 持久层框架,简化了对象关系映射(ORM)过程,使开发者能以面向对象的方式进行数据持久化操作而无需直接编写 SQL 语句。本文提供 Hibernate 入门指南,介绍核心概念及示例代码,涵盖依赖引入、配置文件设置、实体类定义、工具类构建及基本 CRUD 操作。通过学习,你将掌握使用 Hibernate 简化数据持久化的技巧,为实际项目应用打下基础。
917 0
|
Kubernetes 监控 调度
K8S中Scheduler原理分析
【6月更文挑战第20天】K8S Scheduler是集群的关键组件,它监听API Server,为新Pod选择合适的Node。