I ran into a situation where I have to repeat creating menus from dataStore, so I created this little helper class. Hope its useful to others too

PHP Code:
MenuBuilder = {
    
buildMenu: function(config) {
        var 
menu = new Ext.menu.Menu();
        var 
dataStore config.dataStore;
        
dataStore.addListener('load',function() {
            
this.loadMenu(config,menu);
        },
this);
        
        if(
config.load) {
            
dataStore.load();
        }else {
            
this.loadMenu(config,menu);
        }
        
        return 
menu;
    },
    
loadMenu: function(config,menu) {
        
menu.removeAll();
        
nameField config.nameField;
        
handler config.handler;
        
config.dataStore.each(function(item){
            
menu.addItem(new Ext.menu.Item({
                
textitem.get(nameField),
                
handler:function() {
                    
handler(item);    
                }
            }));
        });
    }

three options for config:
dataStore: the data Store
nameField: the name of the store field to be put as menu item
handler: call on each item function pass the item clicked on

use it

PHP Code:
newTicketMenu MenuBuilder.buildMenu({    
                
dataStore:this.myDataStore,
                
handler: function(item) {
                    
someFunction({name:item.get('name'),id:item.get('id')});
                },
                
nameField:'name',
                                
load:true
            
}); 
possible extension:

a config option called functionField(item)
to create a custom MenuItem's text base on the item of the dataStore