как установить идентификатор combobox из данных хранилища, полученных в extjs 4 - PullRequest
0 голосов
/ 24 марта 2012

У меня есть комбобокс в моей формпанели.Первоначально я использовал эту форму для добавления новой информации о компании в свою базу данных.

Теперь у меня есть сетка, содержащая информацию о компании, когда я нажимаю на нее на основе запроса Id, и он возвращает полную информациюо фирменном магазине.

со всеми этими данными Я также получаю идентификатор страны, штата, города в поле со списком, и я не могу установить значения своего поля со списком в зависимости от идентификатора страны, государстваid, идентификатор города получен .

ниже указаны мои данные компании json

    {
    "companydata": [{
        "city": {
            "cityname": "Patna",
            "stateid": 2,
            "cityid": 2,
            "cityzipcode": null
        },
        "cmpname": "Kintu Designs Pvt ltd",
        "cmptitle": "Kintu Designs Pvt ltd",
        "cmpcontact": "8128812153",
        "cmpdesc": "<b>?Kintu designs Surat</b>",
        "cmpfax": "8128812153",
        "cmpwebsite": "www.kintudesigns.com",
        "cmpemail1": "yaryan997@gmail.com",
        "cmpemail2": "yaryan997@gmail.com",
        "cmplogo": "calendar.png",
        "cmplogopath": "upload/images/",
        "cmpaddress": "Kintu designs Surat",
        "cmpcreatedby": 1,
        "cmpcreatedon": 1199932743000,
        "cmpmodifiedon": 1199932743000,
        "cmpmodifiedby": 0,
        "id": 1,
        "state": {
            "statename": "Bihar",
            "countryid": 1,
            "stateid": 2
        },
        "country": {
            "countryid": 1,
            "countryname": "India"
        }
    }],
    "total": 1,
    "success": true
}

теперь на основе этого я хочу установить значения моей формы редактирования,Все значения установлены правильно, только значения в выпадающем списке не установлены идеально.

мой код окна редактирования ниже

Ext.define('rms.view.companymgt.companyEdit', {
    extend: 'Ext.window.Window',
    alias: 'widget.companyeditwindow',
    id: 'companyeditwindow',
    editform:1,
    itemId: 'companyeditwindow',
    store: 'companyStore',
    constrain: true,
    height: 595,
    width: 875,
    layout: {
        type: 'column'
    },
    title: 'Company',

    initComponent: function() {
        var me = this;

        Ext.applyIf(me, {
            items: [
                {
                    xtype: 'form',
                    itemId: 'editmainform',
                    frame: true,
                    height: 546,
                    margin: 2,
                    width: 838,
                    layout: {
                        type: 'column'
                    },
                    bodyPadding: 10,
                    preventHeader: true,
                    title: 'My Form',
                    items: [
                    {

                        xtype: 'fieldset',
                        height: 134,
                        margin: 2,
                        width: 400,
                        title: 'Company Information',
                        items: [
                        {
                            xtype: 'textfield',
                            id: 'cmptitle',
                            itemId: 'cmptitle',
                            margin: 5,
                            width: 366,
                            name: 'cmptitle',
                            fieldLabel: 'Company Title',
                            anchor: '100%'
                        },
                        {
                            xtype: 'textfield',
                            id: 'cmpname',
                            itemId: 'cmpname',
                            margin: 5,
                            name: 'cmpname',
                            fieldLabel: 'Company Name',
                            anchor: '100%'
                        },
                        {
                            xtype: 'textfield',
                            id: 'cmpwebsite',
                            itemId: 'cmpwebsite',
                            margin: 5,
                            name: 'cmpwebsite',
                            fieldLabel: 'Website',
                            anchor: '100%'
                        }
                    ]
                },
                {
                    xtype: 'fieldset',
                    height: 138,
                    margin: 2,
                    width: 400,
                    title: 'Company Contact',
                    items: [
                        {
                            xtype: 'textfield',
                            id: 'cmpfax',
                            itemId: 'cmpfax',
                            margin: 5,
                            name: 'cmpfax',
                            fieldLabel: 'Fax No',
                            anchor: '100%'
                        },
                        {
                            xtype: 'textfield',
                            id: 'cmpcontact',
                            itemId: 'cmpcontact',
                            margin: 5,
                            name: 'cmpcontact',
                            fieldLabel: 'Contact No',
                            anchor: '100%'
                        },
                        {
                            xtype: 'textfield',
                            id: 'cmpemail1',
                            itemId: 'cmpemail1',
                            margin: 5,
                            name: 'cmpemail1',
                            fieldLabel: 'Email',
                            anchor: '100%'
                        },
                        {
                            xtype: 'textfield',
                            id: 'cmpemail2',
                            itemId: 'cmpemail2',
                            margin: 5,
                            name: 'cmpemail2',
                            fieldLabel: 'Other Email',
                            anchor: '100%'
                        }
                    ]
                },
                {
                    xtype: 'fieldset',
                    height: 350,
                    margin: 2,
                    width: 397,
                    title: 'Company Address',
                    items: [
                        {
                            id: 'btn-add-country',
                            itemId: 'btn-add-country',
                            xtype: 'button',
                            margin: '4 0 0 303',
                            style: 'position:absolute;',
                            width: 71,
                            text: 'Add Country',
                            action: 'btn-add-country'
                        },
                        {
                             xtype: 'combobox',
                            id: 'countryname',
                            itemId: 'countryname',
                            name: 'countryid',
                            margin: 5,
                            width: 294,
                            fieldLabel: 'Country',
                            emptyText: 'Select Country...',
                            displayField: 'countryid',
                            store: 'country',
                            valueField: 'countryid'
                        },
                        {
                            xtype: 'button',
                            id: 'btn-add-state',
                            itemId: 'btn-add-state',
                            margin: '0 0 0 303',
                            style: 'position:absolute;',
                            width: 71,
                            text: 'Add State',
                            action: 'btn-add-state'
                        },
                        {
                            xtype: 'combobox',
                            id: 'statename',
                            itemId: 'statename',
                            margin: 5,
                            width: 294,
                            name: 'stateid',
                            fieldLabel: 'State',
                            emptyText: 'Select State...',
                            displayField: 'stateid',
                            store: 'state',
                            valueField: 'stateid'
                        },
                        {
                            id: 'btn-add-city',
                            itemId: 'btn-add-city',
                            xtype: 'button',
                            margin: '0 0 0 303',
                            style: 'position:absolute;',
                            width: 71,
                            text: 'Add City',
                            action: 'btn-add-city'
                        },
                        {
                            xtype: 'combobox',
                            id: 'cityname',
                            itemId: 'cityname',
                            margin: 5,
                            width: 294,
                            name: 'cityid',
                            fieldLabel: 'City',
                            emptyText: 'Select City...',
                            displayField: 'cityid',
                            store: 'city',
                            valueField: 'cityid'
                        },
                        {
                            xtype: 'textareafield',
                            height: 75,
                            id: 'cmpaddress',
                            itemId: 'cmpaddress',
                            margin: 5,
                            width: 380,
                            name: 'cmpaddress',
                            fieldLabel: 'Address',
                            anchor: '100%'
                        },
                        {
                            xtype: 'htmleditor',
                            height: 146,
                            id: 'cmpdesc',
                            itemId: 'cmpdesc',
                            margin: 5,
                            style: 'background-color: white;',
                            name: 'cmpdesc',
                            fieldLabel: 'Description',
                            hideLabel: true,
                            anchor: '100%'
                        }
                    ]
                },
                {
                    xtype: 'fieldset',
                    height: 350,
                    margin: 2,
                    width: 398,
                    title: 'Company Logo',
                    items: [
                        {
                            xtype: 'form',
                            frame: true,
                            itemId: 'logoform',
                            id: 'logoform',
                            height: 320,
                            width: 375,
                            bodyPadding: 10,
                            preventHeader: true,
                            title: 'My Form',
                            items: [
                                    {
                                        xtype: 'image',
                                        height: 158,
                                        itemId: 'cmplogoimg',
                                        margin: 10,
                                        width: 287,
                                        src:'http://www.sencha.com/img/sencha-large.png'
                                    },
                                    {
                                        xtype: 'filefield',
                                        margin: '10 0 0 15',
                                        width: 296,
                                        name: 'file',
                                        id: 'file',
                                        itemId: 'file',
                                        fieldLabel: 'File',
                                        labelWidth: 50,
                                        msgTarget: 'side',
                                        allowBlank: false,
                                        emptyText: 'Select file',
                                        buttonText: 'Select a File...'
                                    }],

                                dockedItems: [{
                                    xtype: 'toolbar',
                                    dock: 'bottom',
                                    items: [
                                        {
                                            xtype: 'tbfill'
                                        },
                                        {
                                            xtype: 'button',
                                            text: 'Upload',
                                            handler: function() {
                                                var form = this.up('form').getForm();
                                                alert('VALUE IS :'+form.getValues());
                                                if(form.isValid()){
                                                    form.submit({
                                                        url: 'company/UploadFile.action',
                                                        waitMsg: 'Uploading your file...',
                                                        success: function(fp, o) {
                                                            Ext.Msg.alert('Success', 'Your file has been uploaded.');
                                                            Ext.Ajax.request({
                                                              url: 'company/GetImages.action',
                                                              scope: this,
                                                              success: function(response,opts) {
                                                                    console.log('GET IMAGES');
                                                                }
                                                            });
                                                        }
                                                    });
                                                }

                                            }
                                        },
                                        {
                                            xtype: 'tbseparator'
                                        },
                                        {
                                            xtype: 'button',
                                            text: 'Reset',
                                            itemId: 'btn-reset',
                                            action: 'btn-reset'
                                            ,
                                            handler: function() {
                                                this.up('form').getForm().reset();
                                            }
                                        }
                                    ]
                                }]
                        }
                    ]
                }
            ],
            dockedItems: [
                {
                    xtype: 'toolbar',
                    height: 27,
                    width: 804,
                    dock: 'bottom',
                    items: [
                        {
                            xtype: 'tbfill'
                        },
                        {
                            xtype: 'button',
                            text: 'Save',
                            action: 'btn-save-company'
                        },
                        {
                            xtype: 'tbseparator'
                        },
                        {
                            xtype: 'button',
                            text: 'Exit',
                            action: 'btn-exit-company'
                        }
                    ]
                }
            ]
          }
        ]
        });

        me.callParent(arguments);
    }
});

моя функция контроллеракоторый выполняется при нажатии на сетку

editCompany: function(grid, no, rowindex,colindex,temp) {  
        alert('EDIT COMPANY BUTTON PRESSED');
        var rec = this.getCompanyDetail().store.getAt(rowindex);
        console.log(rec);
        var actionid = grid.getCellByPosition( {row:rowindex,column:colindex } ).id;    
        this.getCompanyEdit().animateTarget=actionid;
        this.getCompanyEdit().editform=1;
        //this.getCompanyEditForm().getForm().reset();
        this.getCompanyEditForm().loadRecord(rec);                  
        this.getCompanyEdit().show();
    },

мой фирменный магазин

Ext.define('rms.store.company', {
extend: 'Ext.data.Store',
model: 'rms.model.companyModel',
storeId: 'companyStore',
autoLoad: true,
 proxy: {
    type: 'ajax',
    api: {
        read : 'company/GetCompany.action',
        create : 'company/CreateCompany.action',
        update: 'company/UpdateCompany.action',
        destroy: 'company/DeleteCompany.action'
    },
    reader: {
        type: 'json',
        root: 'companydata',
        totalProperty: 'total',
        successProperty: 'success'

    },
    writer: {
        type: 'json',
        writeAllFields: true,
        encode: true,
        root: 'companydata'
    }
}

});

и моя модель компании:

Ext.define('rms.model.companyModel', {
extend: 'Ext.data.Model',
fields : [
          { name: 'id', type: 'int', useNull: true, mapping: 'id'},
          { name: 'cmpname', type: 'string', mapping: 'cmpname'},
          { name: 'cmptitle', type: 'string', mapping: 'cmptitle'},
          { name: 'cmpdesc', type: 'string', mapping: 'cmpdesc'},
          { name: 'cmpfax', type: 'string', mapping: 'cmpfax'},
          { name: 'cmpcontact', type: 'string', mapping: 'cmpcontact'},
          { name: 'cmpwebsite', type: 'string', mapping: 'cmpwebsite'},
          { name: 'cmpemail1', type: 'string', mapping: 'cmpemail1'},
          { name: 'cmpemail2', type: 'string', mapping: 'cmpemail2'},
          { name: 'countryname', type: 'int', mapping: 'country'},
          { name: 'statename', type: 'int', mapping: 'state'},
          { name: 'cityname', type: 'int', mapping: 'city'},
          { name: 'cmplogo', type: 'string', mapping: 'cmplogo'},
          { name: 'cmplogopath', type: 'string', mapping: 'cmplogopath'},
          { name: 'cmpaddress', type: 'string', mapping: 'cmpaddress'},
      ]

});

и от ответа сервера я получаю countryid, stateid, cityid.Но я не могу установить поле со списком, который я получил. Пожалуйста, помогите мне выйти из этой проблемы.

Ответы [ 2 ]

0 голосов
/ 26 марта 2012

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

Кроме того, попробуйте установить в каждом элементе выпадающего списка свойство queryMode: local на всякий случай ...

0 голосов
/ 24 марта 2012

Где находится ваш магазин 'страна' и как он определяется?

...