Ext js combo не работает должным образом - PullRequest
0 голосов
/ 22 июня 2011

Я новичок в ExtJS, и я пытаюсь отобразить окно с комбо, кнопкой отмены и кнопкой ОК, но комбо, кажется, не работает должным образом: он не показывает метку, и когда я нажимаю на средство выбора(или триггер) это не показывает список.

Мне нужно, чтобы комбо либо принимало свободный текст и выбранные значения, но я не знаю, что я делаю неправильно.Я просмотрел API и форумы Sencha, но не могу разобраться.

Надеюсь, у вас, ребята, есть решение для этого.Спасибо и извините, если мой английский недостаточно хорош.

 function new_filter()
  {     
        var ds_filter2 = new Ext.data.JsonStore({
        url: 'forms-combobox-data-filters.php?user='+user_id,
        fields: ['id', 'name'],
        autoLoad: true/*,
        totalProperty: "results"*/

});

    var dlg = new Ext.Window(
    {
        title:  'Save Current Settings as a Filter',
        id: 'frmFilter',
        width: 350,
        y: 200,
        height: 120,
        minWidth: 350,
        minHeight: 100,
        iconCls: 'save',
        bodyStyle:'padding:0px 0px 0px 0px; background-color:#F5F5F5;',
        modal: true,
        resizable: false,
        maximizable: false,
        draggable:false,
        closable: true,
        closeAction: 'close',
        hideMode: "offsets",
        constrainHeader: true,
        //autoLoad: { url : 'filter_form2.php', scripts: true},
        keys: [
                { key: [Ext.EventObject.ENTER], handler: function() {
                        create_new_filter();
                    }
                },
                { key: [Ext.EventObject.ESCAPE], handler: function() {
                        dlg.close();
                    }
                }],

        buttons:[
                    {
                        text    : 'OK',
                        handler: function() 
                        {
                            var selectedValue = Ext.getCmp('combo-new-filter').value;   //selectedValue => Nombre                                                   
                            var rec = ds_filter2.getById(selectedValue);                    //rec => ID                                                                 
                            //alert('rec: '+rec+'\nselected value: '+selectedValue);
                            if (rec == undefined ) //si el valor seleccionado no se encuentra en combo
                            {
                                create_new_filter(selectedValue);
                                dlg.close();
                            }
                            else

                            {
                                //alertar con el message box si se desea sobre escrbir el filtro
                                //ok---> grabar
                                //cancel--->cancelar
                                var selected_text = rec.get('name');
                                var id = rec.get('id'); 
                                //alert("selected text: "+selected_text);
                                Ext.MessageBox.confirm('Confirm','Are you sure you want to overwrite this filter "'+selected_text+'"?', function(btn)
                                {

                                    if (btn=='yes')

                                    {   

                                        var url = 'deleteFilter.php?filter='+id;        
                                        var mnmxmlhttp = Array ();
                                        mnmxmlhttp = new myXMLHttpRequest ();
                                        if (mnmxmlhttp) 
                                        {
                                            mnmxmlhttp.open ("POST", url, true);
                                            mnmxmlhttp.setRequestHeader ('Content-Type', 'application/x-www-form-urlencoded');
                                            mnmxmlhttp.send ("");
                                            mnmxmlhttp.onreadystatechange = function () 
                                            {
                                                if (mnmxmlhttp.readyState == 4) 
                                                {  
                                                    create_new_filter(selected_text);   
                                                }
                                            }


                                        }

                                    }


                                });

                            }
                        }

                    },
                    {
                        text    : 'Cancel',
                        handler: function() {
                            dlg.close();
                        }

                    }
                ],

        items:[
                /*{
                    xtype: 'label',
                    forId: 'myFieldId',
                    text: 'Name of saved filter:',
                },*/
                {

                    id:'combo-new-filter',
                    labelAlign: 'left',
                    fieldLabel: 'Filter Name:',
                    xtype: 'combo',                 
                    store: ds_filter2,
                    //queryMode: 'local',                       
                    displayField:'name',
                    valueField: 'id',
                    //editable: true,
                    x: 110,
                    y: 20,
                    listeners:  {
                                    /*beforerender: function(combo){  
                                    combo.setValue("Select saved filter to apply");
                                    },
                                    select:{fn:function(combo, value) {
                                            if (combo.getValue()>0){onSelectFilter(combo.getValue());}

                                            }
                                    }*/

                                }

                }
        ]

    });
dlg.show(); 

}

1 Ответ

2 голосов
/ 23 июня 2011

В вашем окне должна быть конфигурация: форма. Для отображения полей, комбо и т. Д. Макет, содержащий их, должен быть в форме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...