我正在寻找解决方案如何检查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天内结束,当我被允许接受我自己的答案时,或者如果其他人正确回答,则会提前回答=))
答案 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)
对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);