Как динамически изменить значение флажка в приложении extjs?

У меня есть панель, которая будет отображать динамические флажки. после прослушивателя событий флажки должны обновляться динамически на основе значений true/false из JSON, возвращаемого с сервера. Приложение разработано в версии Extjs 4.2. Я проверил, что после рендеринга флажков они загружаются с данными, но сразу очищаются.

Чтобы динамически генерировать флажки....

Ext.Ajax.request({
url: 'http://soup.nielsen.com/test/test5.php',    
method: 'POST',
success: function(result, request) {
    var json = result.responseText;
    var temp = JSON.parse(json);

    for(var i=0;i<Object.keys(temp[newValue]).length;i++){           
        menuArray.push({
            xtype: 'checkboxfield',
            boxLabel: (temp[newValue][i]).split("_").join(" "),
            name: temp[newValue][i],
            id:temp[newValue][i],
            inputValue: 'true',
            uncheckedValue: 'false',
            formBind: false
        });
    }

    checkboxGroup = new Ext.form.CheckboxGroup({
        xtype: 'checkboxgroup',
        fieldLabel: '',
        id:'moduleCheckboxGroup',
        columns: 1,
        items: menuArray
    });

    permissionPanel.removeAll();
    permissionPanel.add(checkboxGroup);

},failure: function(result, request) {
    Ext.Msg.alert('Error', 'An Error occured...');
} });

Чтобы загрузить флажки с данными...

if(grid.getSelectionModel().hasSelection()){

var userID = grid.getSelectionModel().getSelection()[0].data.ID;
var userName = grid.getSelectionModel().getSelection()[0].data.FULL_USER_NAME;
var userGroup = grid.getSelectionModel().getSelection()[0].data.USER_GROUP;

//Creating Dynamic Checkboxes to load User module permissions

var permissionPanel = Ext.getCmp('permissionsPanel');
permissionPanel.show();

var checkboxGroup;
var menuArray = [];
var names = [];
var fieldset;

// Loading a selected user data into user form

var form = Ext.getCmp('userForm').getForm();

Ext.Ajax.request({
    url: 'http://soup.nielsen.com/test/Get_All_User_Info_byID2.php',    
    method: 'POST',
    params: {num:userID},
    success: function(result, request) {
        var json = result.responseText;
        var temp = JSON.parse(json);
        //form.reset();
        Ext.getCmp('allUsersListPanel').hide();
        Ext.getCmp('userPanel').show();
        Ext.getCmp('userGroup').setValue(temp.USERINFO.USER_GROUP);
        form.setValues(temp.USERINFO);
        perForm.setValues(temp.USERINFO);
    },
    failure: function(result, request) {
        Ext.Msg.alert('Error', 'An Error occured...');
    } 
}); } else {Ext.Msg.alert('Message','Please select a user');}

person Anand Singh    schedule 21.06.2013    source источник
comment
Пожалуйста, опубликуйте свой код, чтобы мы могли увидеть, в чем проблема.   -  person Amit Aviv    schedule 21.06.2013
comment
Без кода мы не сможем вам помочь. Пожалуйста, предоставьте нам свой код реализации.   -  person Hariharan    schedule 21.06.2013
comment
Вам нужно улучшить свой вопрос, добавив пример кода, иначе на него можно будет ответить только угадывая   -  person sra    schedule 21.06.2013


Ответы (2)


1) вам не нужно использовать inputValue: 'true', uncheckedValue: 'false' configs: значение или проверено достаточно

2) вам не нужно использовать идентификатор, просто используйте имя, на самом деле никогда не используйте идентификатор, это плохая практика. itemId рекомендуется, если вам нужен запрос с идентификатором, подобным запросу

 menuArray.push({
            xtype: 'checkboxfield',
            boxLabel: (temp[newValue][i]).split("_").join(" "),
            name: temp[newValue][i],
            value : false, // or checked : false
            formBind: false
        });

3) имена свойств вашего объекта json должны совпадать с именами полей формы

        form.setValues(temp.USERINFO);
        perForm.setValues(temp.USERINFO)

Другими словами, объект temp.USERINFO должен иметь свойства с именем temp[newValue][i] (конечно, value )

Резюме :

  • удалить конфиги id и uncheckValue из флажков
  • убедитесь, что ваши свойства объекта json имеют то же имя с полями флажка
person acteon    schedule 06.06.2016

задается «имя» в форме; если нет, вы должны установить значение()

person daixfnwpu    schedule 21.06.2013