Implement search box functionality in sencha touch

I am having a problem with how to implement a search box in a tree store, getting data from the server in sencha touch. Any working code would be appreciated.

+3


source to share


4 answers


In the Search box you can use the up event and filter the vault as a charterer match type to store and display filter data in the list and when you select an item in the list you hide in the list below,

{
    xtype: 'searchfield',
    name : 'Name',
    label: 'Name: ',
    id : 'Name',
    record:'Details',
    placeHolder: 'Name',
    listeners: {
      focus: function( field, e, eOpts ){
        Ext.getCmp('FilterDropDown').show();
      },
      keyup: function(field) {
        var value = field.getValue();
        var Store = Ext.getStore('Details');
        var FilterStore = Ext.getStore('FilterDetails');
        FilterStore.removeAll();
        count=0;
        var thisRegEx = new RegExp(value, 'i');
        for(cnt=0;cnt<Store.getCount();cnt++){
          if(thisRegEx.test(Store.data.items[cnt].data.name)){
            FilterStore.add({
                'id':Store.data.items[cnt].data.id,
                'name': Store.data.items[cnt].data.name,
                'email': Store.data.items[cnt].data.email

            });
          }
        }
       }
    }
  },
  {
    xtype:'FilterList',
    id: 'FilterDropDown',
    height:200,
    hidden : true,
    listeners: {
      itemtap: function( field, index, target, record, e, eOpts ){
         Ext.getCmp('Name').setValue(record.data.name); 
         Ext.getCmp('Email').setValue(record.data.email); 
         Ext.getCmp('Mobile').setValue(record.data.mobileno); 
         Ext.getCmp('FilderDropDown').hide();
      }
    }
  },

      

xtype Code FilterList



Ext.define('appname.view.FilterList', {
extend: 'Ext.dataview.List',
xtype: 'FilterList',
require: ['FilterDetails'],
config:{
  store: 'FilterDetails',
  scrollable: true,
  cls: 'drop_down_list',
  ui: 'round',
  itemTpl: '<div>{name}</div>'
}
});

      

This will help you :)

+2


source


Assuming the data is already in the store when searching, it is not that hard to implement using the methods speznaz refers to.

You have the xtype "searchfield" or "textfield".

{
    xtype: "searchfield",
}

      

In the controller, bind the "keyup" event to this field.



refs: {
   searchfield: 'mypanel searchfield'
},
control: {
   searchfield: {
      keyup: 'doSearch'
   }
}

      

To find a function:

doSearch: function(searchfield, e, eOpts) {
     var searchterm = searchfield.getValue();
     var store = Ext.getStore('myStore');

     // Now just customise the search options
     store.find(fieldName, value, [startIndex], [anyMatch], [caseSensitive], [exactMatch] );
}

      

This assumes you want to search the keyboard. You can use the action event instead.

+1


source


Assuming you already have store data. Here's the working code:

{
    xtype: "searchfield",
    name:'searchName'
}

      

In the controller, bind the "keyup" event to this field.

refs: {
searchName: 'searchfield[name=searchName]'
},
control: {
  searchName: {
    keyup: 'doSearch'
  }
}

      

To find a function:

    doSearch: function(field, e, eOpts) {
    var searchterm = field.getValue();
     var store = Ext.getStore('myStore');

   // Now just customise the search options
    store.filter(fieldName,searchterm);
    }

      

+1


source


Use try.sencha.com, it has a lot of examples on how to use the framework. To get data from the server, you need to use the Ajax storage. I think this tutorial will be a good start for that, it also implements the tree store.

This example explains how to filter the data in a list based on what you enter in the search box.

Hope it helps

0


source







All Articles