hi论坛成员我在extjs 4中设置radiofield有一个问题
我的表单radiogroup xtype代码如下所示
{
xtype: 'radiogroup',
dataIndex: 'gender',
margin: 5,
fieldLabel: 'Gender',
items: [{
xtype: 'radiofield',
name: 'gender',
boxLabel: 'Male',
inputValue:'0'
}, {
xtype: 'radiofield',
name: 'gender',
boxLabel: 'Female',
inputValue:'1'
}]
}
我收到的json数据是
{
"total": 1,
"success": true,
"employeedata": [{
"username": "yaryan997",
"surname": "Singh",
"firstname": "Yogendra",
"gender": false
}]
}
我的员工列表视图包含执行以下功能的操作列editEmployee
editEmployee:function(grid,no,rowindex,colindex,temp) {
alert('Edit EMPLOYEE button pressed');
var rec = grid.store.getAt(rowindex);
var employeeid = rec.get('id');
store = grid.getStore();
store.load({
params: {'employeeid':employeeid},
scope: this,
callback: function(records, operation, success) {
//the operation object contains all of the details of the load operation
console.log(records);
this.getEmployeeEdit().editform=1;
this.getEmployeeEditForm().loadRecord(rec);
this.getEmployeeEdit().show();
}
});
this.getEmployeeStore().load();
},
基于id,显示editEmployee视图。我的编辑员工正确显示所有值,但只有问题在于radiofield。他们没有显示所选的值。
我提供给你的json数据,就像雇员一样
我无法根据我从json收到的数据设置radiogroup性别。
请为我建议一些解决方案。
答案 0 :(得分:1)
首先,您应将inputValue
设为'false'和'true'。第二个是无线电组的新设计。您可以在sencha论坛的帖子中找到解决方案。请参阅:http://www.sencha.com/forum/showthread.php?187185-Set-a-int-value-on-a-radiogroup-fails&goto=newpost
问题是setValue
期待一个对象,只有在你必须为性别的数据类型时才会出现这种情况;一个用于男性,一个用于女性......这就是为什么我将此作为错误发布的原因。从我的帖子中删除覆盖代码。
setValue: function (value) {
if (!Ext.isObject(value)) {
var obj = new Object();
obj[this.name] = value;
value = obj;
}
Ext.form.RadioGroup.prototype.setValue.call(this, value);
}
答案 1 :(得分:0)
实际上,问题在于您尝试将布尔值传递给radioBox
:
"gender": false
你不应该这样做。
如果将radioBox
/ true
值传递给false
方法,则setValue
将设置为选中/取消选中,忽略inputValue
的内容字段设置为。
这是源代码,我们可以看到传入的任何其他值最终将以boolean参数的递归调用结束:
setValue: function(v) {
var me = this,
active;
if (Ext.isBoolean(v)) {
me.callParent(arguments);
} else {
active = me.getManager().getWithValue(me.name, v, me.getFormId()).getAt(0);
if (active) {
active.setValue(true);
}
}
return me;
}