2011-06-22 5 views
0

私はExtJSで新しく、コンボ、キャンセル、OKボタンが付いたウィンドウを表示しようとしていますが、コンボは正しく動作していないようです。ピッカー(またはトリガー)をクリックするとリストが表示されません。Ext jsのコンボが正常に動作しない

フリーテキストと選択した値を受け入れるにはコンボが必要ですが、私が間違っていることはわかりません。私は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(); 

}

+0

あなたはこのURLから取得したデータを投稿できますか? 'forms-combobox-data-filters.php?user =' + user_id – Swar

+0

私はデータを提供することはできませんが、コンボに次の値: TYPEAHEAD:偽、 モード: 'リモート'、 編集可能:真、 triggerAction: 'すべて'、 は、この変更は、トリックを行いました。 – Jorge

+0

ラベルを表示できませんでしたが、ラベルタイプの項目をウィンドウに追加しても問題なく動作しました。 – Jorge

答えて

2

あなたの窓は、レイアウトを持っている必要があります。フィールド、コンボなどを表示するには、それらを含むレイアウトがフォームの1つである必要があります。

関連する問題