ExtJs3.0 Ext.form.CheckboxGroup批量取值和设值方法
时间: 2023-11-28 18:47:44 浏览: 285
Ext.form.CheckboxGroup是一个可以包含多个checkbox的组件,可以通过以下方法批量取值和设值:
1. 批量取值:
```javascript
var checkboxGroup = Ext.getCmp('checkboxGroupId'); // 获取组件
var values = checkboxGroup.getValue(); // 获取所有选中checkbox的value值,返回一个Array
```
2. 批量设值:
```javascript
var checkboxGroup = Ext.getCmp('checkboxGroupId'); // 获取组件
checkboxGroup.setValue(["value1", "value2", ...]); // 设置多个checkbox的value值,参数为一个Array
```
其中,'checkboxGroupId'是checkboxGroup组件的id属性值。注意,如果checkbox的value值为数字类型,getValue()方法返回的也是数字类型的数组。如果checkbox的value值为字符串类型,getValue()方法返回的是字符串类型的数组。setValue()方法的参数也需要根据checkbox的value值类型进行设置。
相关问题
如何设置Ext.form.Checkbox组件,使得当用户勾选其中一个时,另外两个会自动取消勾选状态?
在ExtJS中,你可以通过监听`checkchange`事件并编写一些逻辑来实现这种联动效果。以下是一个简单的步骤说明:
1. 创建`Ext.form.CheckboxGroup`组件,并将需要联动的三个Checkbox添加到其中,例如:
```javascript
var checkboxGroup = Ext.create('Ext.form.CheckboxGroup', {
fieldLabel: '选择',
items: [
{ boxLabel: '选项A', name: 'checkboxA' },
{ boxLabel: '选项B', name: 'checkboxB' },
{ boxLabel: '选项C', name: 'checkboxC' }
],
});
```
2. 添加事件处理程序,当某个复选框的状态改变时,检查其他复选框的状态,如果被选中则清除其选中状态:
```javascript
checkboxGroup.on('checkchange', function(field, newValue, oldValue) {
var isChecked = newValue === true;
if (isChecked) {
// 遍历group内的所有Checkbox
checkboxGroup.items.each(function(item) {
if (item.getName() !== field.getName() && item.getValue()) {
item.setValue(false); // 取消其他已选中的复选框
}
});
}
});
```
这将在用户勾选一个复选框时,自动取消其他两个复选框的选择状态。
ExtJs : Ext.data.store 中each的使用技巧
在 Ext.data.Store 中,each 方法用于对 Store 中的每个记录进行迭代并执行指定的函数。以下是使用技巧:
1. 语法:store.each(fn, [scope]);
其中,fn 是处理每个记录的函数,可以是一个函数引用或匿名函数;scope 是 fn 函数中 this 的作用域,如果不指定则默认为 this,即 Store。
2. 使用 each 方法可以避免使用 for 循环对 Store 中的记录进行迭代,从而提高代码的可读性和效率。
3. 在 fn 函数中,可以通过传入的参数 record、index、length 访问每个记录的值和索引位置,以及 Store 的总长度。
4. 在 fn 函数中,可以使用 break 和 return 语句来中断循环和函数执行。
5. 例子:
```
store.each(function(record, index, length) {
console.log(record.get('name'));
});
```
上面的代码会对 Store 中的每个记录进行迭代,并输出每个记录的 name 字段值。
阅读全文