2012-05-24 3 views
0

Я пытаюсь добавить поле поиска в свою форму в sencha touch 1.1, но, пройдя примеры, предоставленные sencha touch, я не смог найти способ обеспечить динамическое хранилище в поле поиска. У меня есть магазин, который будет динамически получать данные. Магазин содержит список мест, и когда пользователь вводит первую букву места, ему должен быть предоставлен список мест, начинающихся с этого алфавита. Вот код, который я использовал.Searchfield in Sencha touch

var searchField = new Ext.form.Search({ 
     name : 'search', 
     placeHolder: 'Search', 
     useClearIcon: true, 
     data:siteStore, 
     autoComplete:true, 


    }); 


inputDataForm = Ext.extend(Ext.Panel, { 
    scroll: 'vertical', 
    autoDestroy: true, 
    layout: 'fit', 
    id:'inputForm', 


    initComponent: function() { 



    this.items = [{ 
        xtype: 'form', 
        cls: 'formClass', 
        id:'inputImageForm',       
        bodyPadding: '0', 
        scroll: 'vertical', 


        items: [searchField], 
        }];  

    inputDataForm.superclass.initComponent.call(this); 

    }, // End fo initComponent 

}); 

Может ли кто-нибудь помочь. Спасибо

+0

Можете выложить определение магазина? – stan229

ответ

0

Это мой код. Он работает нормально, и я закрепил поле поиска в панели.
Вы можете использовать это, и я уверен, что он работает.

, dockedItems: [{ 
       xtype:'searchfield' 
      , name: "searchfield" 
      , placeHolder: 'Search Patient' 
      , id: 'searchPat' 
      , listeners: { 
        keyup: function(me,e){ 
         var searchData = me.getValue(); 
         Ext.Ajax.request({ 
          url:'your data url' 
         , params:{ 
           filter: searchData 
          } 
         , scope: this 
         , success: function(res){ 
           var rec = Ext.decode(res.responseText); 
           var def = typeof (rec.success); 
           if(def != "undefined"){ 
            this.store.removeAll(); 
            this.store.loadData(rec.patients); 
           } 
          } 
         , failure:function(res){ 
           console.log(res); 
          } 
         }) 
        } 
       , scope: this 
       }