检查CheckboxGroup ExtJS组件中的各种复选框

时间:2012-01-31 12:36:25

标签: javascript extjs checkbox extjs4

我正在寻找解决方案如何检查Ext.form.CheckboxGroup组件中已经呈现并包含一组项目的项目。

组件的代码是:

var oCheckboxGroup = new Ext.form.CheckboxGroup({
    columns: 2,
    vertical: true,
    items: [
        {boxLabel: "Value 1", inputValue: 1},
        {boxLabel: "Value 2", inputValue: 2},
        ...
        {boxLabel: "Value N", inputValue: N}
    ]
});

此组件将通过单击按钮显示在模态窗口中,因此我必须根据要修改的记录重新检查复选框组中的项目。

例如,当我第一次显示窗口时,我必须预先检查项目 1 2 3 ,第二次 - 2 4 5

所以真正的问题是:如何循环复选框组项并选中/取消选中复选框?

是的,我尝试了下一个解决方案,但没有尝试:

oCheckboxGroup.items.each(function(oEl) {
    oEl.checked = true;
});

感谢。


UPD

找到答案。问题将在2天内结束,当我被允许接受我自己的答案时,或者如果其他人正确回答,则会提前回答=))

4 个答案:

答案 0 :(得分:6)

找到解决方案。 Sencha说:

  

setValue (对象值):Ext.form.CheckboxGroup

     

设置组中所有复选框的值。期望的格式是与组中复选框的名称对应的名称 - 值对的对象。每对可以有一个或多个值:

     
      
  • 单个布尔值或字符串值将传递给具有该名称的复选框的setValue方法。有关可接受的值,请参阅Ext.form.field.Checkbox.setValue中的规则。
  •   
  • 字符串数组值将与具有该名称的组中复选框的inputValue匹配;将检查其inputValue存在于数组中的复选框,并且将取消选中其他复选框。
  •   

所以我刚刚将name: "cbgroup"属性添加到checkbox配置中,然后我使用了像

这样的构造
// first time
oCheckboxGroup.setValue({
    cbgroup: [1, 2, 3]
})
// second time
oCheckboxGroup.setValue({
    cbgroup: [2, 4, 5]
})

感谢所有试图帮助我的人,希望这个答案能节省一些时间;)

答案 1 :(得分:0)

对于ExtJS 3.x

对CheckboxGroup对象使用setValue方法,并为其中的各个项指定true / false:

setValue( Object value ) 

E.g。在您的情况下,要预先检查1,2,3,您必须致电:

cbxGrpObj.setValue([true,true,true]);

要预先检查4,5并取消检查1,2,3,您必须致电:

cbxGrpObj.setValue([false,false,false, true,true]);

希望这有帮助!

答案 2 :(得分:0)

我在寻找如何从form.setValues调用中设置checkboxgroup值时偶然发现了这一点。事实证明,在ExtJS中,如果您为组中的所有复选框指定相同的名称,则可以为setValues提供该名称的值数组,并且将为您检查任何匹配的值。

var oCheckboxGroup = new Ext.form.CheckboxGroup({
    columns: 2,
    vertical: true,
    items: [
        {name: 'cbg1', boxLabel: "Value 1", inputValue: 1},
        {name: 'cbg1', boxLabel: "Value 2", inputValue: 2},
        {name: 'cbg1', boxLabel: "Value N", inputValue: N}
    ]
});
...

form.setValues( { cbg1: [ '1','N' ] } );

我希望这可以帮助其他人找到与我相同的关键字。

答案 3 :(得分:0)

Ext.each(`oCheckboxGroup`.items.items, function(item) {
     item.checked = true;
}, this);