2012-03-30 3 views
2

привет участник форума Я имею одну проблему с установкой радиополя в ExtJS 4как установить RadioGroup радиополя на основе ExtJS данных JSON 4

мой код формы 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(); 
    }, 

на основе идентификатора показан вид editEmployee. Мой редактор Employee показывает все значения правильно, но проблема связана только с радиоприемником. Они не отобразили выбранное значение.

мой JSON данные, которые я имел предоставить вам, который приходит как employeedata

Я не в состоянии установить RadioGroup пол на основе данных я получаю от JSON.

, пожалуйста, предложите мне некоторое решение для этого.

+0

Ваших радио inputValues ​​являются строками, и типа данных «пола» на вашем json есть bool. Может быть, проблема там? –

ответ

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); 
} 
0

На самом деле, проблема заключается в том, что вы пытаетесь передать логическое значение вашей radioBox:

"gender": false 

, которые вы не должны.

The radioBox будет установлен проверить/бесконтрольно, если значение true/false передается его метод setValue, игнорируя то, что это inputValue поле установлено значение.

Вот исходный код, мы можем видеть, что любое другое значение, переданное в конце концов закончится рекурсивным вызовом с булевым параметром:

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; 
} 
Смежные вопросы