`
peteronline
  • 浏览: 262306 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Ext CheckboxGroup 动态数据源类的封装

阅读更多
My.UI.CheckboxGroup=Ext.extend(Ext.form.CheckboxGroup,{
    columns:3,
    dataUrl:'', //数据地址
    labelFiled:'label',
    valueFiled:'value',
    setValue:function(val){
        if(val.split){
            val=val.split(',');
        }
        this.reset();
        for(var i=0;i<val.length;i++){
            this.items.each(function(c){
                //debugger;
                if(c.inputValue==val[i]){
                    c.setValue(true);
                }
            });
        }
       
    },
    reset:function(){
        this.items.each(function(c){
            c.setValue(false);
        });
    },
   
    getValue:function(){
        var val=[];
        this.items.each(function(c){
            if(c.getValue()==true)
                val.push(c.inputValue);
        });
        return val.join(',');
    },
    onRender:function(ct, position){       
       var items=[];
        if(!this.items){                        //如果没有指定就从URL获取
            JetCom.Ajax.request({
                url:this.dataUrl,
                scope:this,
                sync:true, //同步请求,需要添加扩展插件 http://hi.baidu.com/kaka888/blog/item/4687ccea21333adbd439c953.html
                onSuccess:function(data){
                    for(var i=0;i<data.length;i++){
                        var d=data[i];
                        var chk = {boxLabel: d[this.labelFiled], name: this.name||'', inputValue: d[this.valueFiled]};
                        items.push(chk);
                    }               
                }
            });
            this.items=items;
        }
        My.UI.CheckboxGroup.superclass.onRender.call(this, ct, position);
    }
});
Ext.reg('mycheckgroup',My.UI.CheckboxGroup);

调用

var cc=new My.UI.CheckboxGroup({
    fieldLabel: 'Auto Layout',
    name: 'cb-custwidth',
    dataUrl:'data.json'
});


var chk=new Ext.FormPanel({
    renderTo:'form',
    frame:true,
    items:[
        cc
        ]});
cc.setValue('2,4,5');//设值


//这样重写setValue() getValue()更好
Ext.override(Ext.form.CheckboxGroup,{   
    //在inputValue中找到定义的内容后,设置到items里的各个checkbox中   
    setValue : function(value){  
        this.items.each(function(f){  
            if(value.indexOf(f.inputValue) != -1){  
                f.setValue(true);  
            }else{  
                f.setValue(false);  
            }  
        });  
    },  
    //以value1,value2的形式拼接group内的值  
    getValue : function(){  
        var re = "";  
        this.items.each(function(f){  
            if(f.getValue() == true){  
                re += f.inputValue + ",";  
            }  
        });  
        return re.substr(0,re.length - 1);  
    },  
    //在Field类中定义的getName方法不符合CheckBoxGroup中默认的定义,因此需要重写该方法使其可以被BasicForm找到  
    getName : function(){  
        return this.name;  
    }  
});
分享到:
评论
1 楼 yangguo 2011-08-05  
写的真好!

相关推荐

    Ext checkBoxGroup的用法和取值

    本篇将详细探讨`checkBoxGroup`的使用方法及其取值方式,这对于创建复杂的表单和数据选择功能至关重要。 `Ext JS`中的`checkBoxGroup`是一个方便的组件,它允许用户在一个组内多选或单选复选框。`checkBoxGroup`常...

    Ext_Net_CheckboxGroup 勾选、全选、反选和限制勾选

    Ext_Net_CheckboxGroup 勾选、全选、反选和限制勾选

    ext checkboxgroup 回填数据解决

    重写 代码如下: //解决checkboxgroup回填数据问题 Ext.override(Ext.form.BasicForm,{ findField : function(id){ var field = this.items.get(id); if(!field){ this.items.each(function(f){ if(f.isXType(...

    ExtJS实现动态读写Checkboxgroup

    动态读写Checkboxgroup涉及了对用户交互的响应以及数据的实时更新,这对于创建交互性强、用户友好的界面至关重要。下面将详细讲解如何实现这一功能。 首先,我们需要了解CheckboxGroup的基本结构。CheckboxGroup由...

    Extjs3.0 checkboxGroup 动态添加item实现思路

    如需要数据动态创建,试着创建整个CheckboxGroup,而不是动态添加item。 代码如下: var unitColumns=[]; for(var i = 0;i &lt; records.length;i++){ unitColumns.push({ boxLabel: records[i].data.A11, n

    EXT checkbox 的 check 事件

    EXTjs2 的treeNode 带有checkbox,可是API中,关于checkbox的事件就只有一个checkchange事件,所以写个方法传上来。

    WPF CheckBox绑定枚举数据源(数据列表)

    WPF在MVVM模式下通过Converter控制不同CheckBox对应不同枚举类型勾选,比如我现在描述一个人有八种行为,这八种行为分别通过8个CheckBox来标识,如果存在这种行为则勾选,不存在则不勾选

    Ext表单组件之checkbox

    如果需要一组互斥的复选框,可以使用`Ext.container.CheckboxGroup`,它允许用户从一组选项中选择一个。配置`columns`属性可以设置每行显示的复选框数量。 8. **响应式设计** 在移动设备上,复选框的布局可能需要...

    CheckBoxGroup.js:CheckBoxGroup JavaScript 类

    在JavaScript编程中,`CheckBoxGroup.js` 是一个用于管理复选框组的类,它提供了一种方便的方式来处理多个复选框之间的交互和数据管理。这个类通常用于创建用户界面,其中用户可以从多个选项中选择一个或多个。下面...

    extjs 初始化checkboxgroup值的代码

    代码如下: Ext.override(Ext.form.CheckboxGroup,{ setValueForItem : function(val){ //多个选项值以逗号分开的 val = “,”+val+”,” this.items.each(function(item) { if (val.indexOf(item.inputValue) &gt; -1) ...

    TreeCheckBox 数据源ArrayCollication

    同时,如果数据源需要动态更新(例如,从服务器获取或保存用户选择),则需要正确处理这些操作,避免状态的混乱,也就是避免“Array Collision”。 在实际应用中,`TreeCheckBox`的数据源管理可能涉及以下几点: 1...

    Ext.net TreePanel的Checkbox操作及父子联动

    - 服务器端代码可能处理数据源,如填充TreePanel的节点数据,并可能与CheckBoxModel的配置交互。 5. **实际应用**: - 在权限管理中,可以使用这样的TreePanel来让用户选择不同的权限角色或功能。 - 文件管理...

    C#获取动态生成的CheckBox值

    在本文中,我们将探讨如何在C#中动态生成和获取CheckBox控件的值,主要关注两种不同的实现方式。 **方法一:服务器容器控件中添加子控件** 在ASP.NET中,我们可以利用服务器端控件来动态创建CheckBox。这种方式的...

    CheckBoxGroup:自定义属性,自定义控件,自定义函数,自定义类;多选框checkBox;

    你可以创建一个名为`CustomCheckBoxGroup`的类,继承自`CheckboxGroup`,并在此基础上添加新特性,如事件监听、数据绑定或状态管理。同时,可以利用Java的面向对象特性,如封装和继承,确保代码的模块化和重用性。 ...

    cocos2dx HTML Label & scrollview & checkboxgroup & 血条

    CheckboxGroup还支持互斥选择,即在同一组内的Checkbox只能选择一个,这可以通过设置互斥属性来实现。 在压缩包文件"TJTestV3"中,可能包含了使用这些技术的示例代码或者项目资源。这个测试项目可能是一个包含HTML...

    EXT TREE 扩展CHECKBOX JS

    在EXT JS中,树形组件(Tree Panel)常用于展现层级结构的数据,而扩展CHECKBOX功能则允许用户对树节点进行多选操作。 在EXT JS的Tree Panel中,要实现复选框功能,我们需要自定义UI Provider。UI Provider是EXT JS...

    EXTJS checkbox赋值

    7. `items`: 这是一个数组,包含了每个复选框的配置,每个配置项包括`boxLabel`(复选框显示的文本)、`name`(与`checkboxgroup`相同的name,用于数据绑定)和`inputValue`(当复选框被选中时,对应的值)。...

Global site tag (gtag.js) - Google Analytics