Ext js combo无法正常工作

时间:2011-06-22 16:43:58

标签: javascript extjs combobox

我是ExtJS的新手,我正在尝试显示一个带有组合,取消和OK按钮的窗口,但组合似乎没有正常工作:它没有显示标签,当我点击选择器时(或触发器)它不显示列表。

我需要组合来接受自由文本和选定的值,但我不知道我做错了什么。我去了Sencha api和论坛,但我无法解决这个问题。

我希望你们有一个解决方案。如果我的英语不够好,感谢和抱歉。

 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 个答案:

答案 0 :(得分:2)

您的窗口需要具有布局:'form'配置。为了显示字段,组合等,包含它们的布局需要是一个表单。