ext menu小问题

自己定义菜单发现里面的text和id都是手写 是静态的 我想实现菜单项的内容是从数据库里面取出来的 这样menu支持吗 大家看我定义的菜单
var contentMenu=new Ext.menu.Menu
({
items:[{text:'删除' {text:'修改'}); 这样text都是手动写的 我想实现从数据库里展现 有这样的属性或者方法吗 看了下API也没找到
[b]问题补充:[/b]
但是你们这还是实现定义好的静态menu然后添加到已经存在的menu 我是想实现那种url的形式 将库里的text转换成json的这样子 然后自动生成menu
生成tree的这个样子 呵呵 这好像不行吧!

没有测试过,你自己测试一下:
[code="java"]
// Create the menu
var menu = new Ext.menu.Menu({
listeners:{
//beforeshow:function(menu){...}
'beforeshow':function(menu){
Ext.Ajax.request({

url:'xx.action',

success:function(response){

var items = Ext.decode(response.responseText);
//假设后台返回的JSON数据 :[{text:'普通菜单1'},{text:'菜单2'},'文本菜单',new Ext.menu.Item({ text: "普通菜单对象"})]
for(var i = 0; i < items.length; i++)
{
//menu.add(items[i]);
var menuItem = items[i];
menu.add(menuItem);

}
}

});
}
}
});
[/code]

一样写,那样在查询数据库的返回事件中,手动初始化一个menu
var menu = new Ext.menu.Menu({text:'修改'});
再加给contextmenu
contextmenu.additem(menu);

可以,你查看Menu的API,有几个以add开头的方法,包括add方法。
下面是一些例子
[code="java"]
// Create the menu
var menu = new Ext.menu.Menu();

// Create a menu item to add by reference
var menuItem = new Ext.menu.Item({ text: 'New Item!' });

// Add a bunch of items at once using different methods.
// Only the last item added will be returned.
var item = menu.add(
menuItem, // add existing item by ref
'Dynamic Item', // new TextItem
'-', // new separator
{ text: 'Config Item' } // new item by config
);
[/code]

解析jsonstore组建级联菜单,在sotre load事件中一层层循环拼,组装就行了,
store1.on("load",function(store1){
for ( var i = 0; i < store1.getCount(); i++) {
var store2 = new Ext.data.Store( {
data : store1.getAt(i).get('childs'),
reader : ....});
for ( var j = 0;j < store2.getCount(); j++) {
二级菜单项
for(){
............
}
}
一级菜单 项
}
组装 菜单

})
store1.load();

想menu自动实现,那就自己去扩展定义个,原理还是不变的。。。

[code="js"]var contentMenu=new Ext.menu.Menu
({
items:[{text:'删除' {text:'修改'});

Ext.Ajax.request({
url:'xx.action',
success:function(response){
var obj = Ext.decode(response.responseText);
contentMenu.add({
text:'obj.text'
})//如果返回的json格式对上了.直接就可以contentMenu.add(obj)
}
})[/code]