Как настроить радиополя радиогруппы на основе данных JSON ExtJS 4 - PullRequest
2 голосов
/ 30 марта 2012

привет участник форума У меня одна проблема с настройкой радиополя в extjs 4

код моей радиогруппы 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. Мой сотрудник редактирования показывает все значения правильно, но проблема заключается только в радиополе. Они не показывают выбранное значение.

мои данные json, которые я вам предоставил и которые представлены в качестве сотрудников

Я не могу установить пол радиогруппы на основе данных, которые я получаю от json.

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

Ответы [ 2 ]

1 голос
/ 31 марта 2012

Сначала вы должны установить inputValue на «ложь» и «истина».Второе - это новый дизайн радиогруппы.Вы найдете решение в моей теме на форуме 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 голосов
/ 16 июля 2015

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

"gender": false

, которое вам не нужно.

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;
}
...