iteye_3782 2009-04-30 09:46
浏览 168
已采纳

Ext树

var arry=[{
id:'ExtJs1',
text:'ExtJs1',
leaf:false,
children:[{
id:'a1',
text:'a1',
leaf:true
},{
id:'b1',
text:'b1',
leaf:true
}]
},{
id:'ExtJs2',
text:'ExtJs2',
leaf:false,
children:[{
id:'a2',
text:'a2',
leaf:true
},{
id:'b2',
text:'b2',
leaf:true
}]
}]

Ext.onReady(function(){
var tree=createTree();
var treeEditor=createTreeEditor(tree);
tree.on('contextmenu',showContextMenu);
tree.render(document.body);
// tree.expandAll();
});

//创建树
function createTree(){
var tree=new Ext.tree.TreePanel({
animate : true,
width :300,
height :300,
enableDD : false,
root : new Ext.tree.TreeNode({
id:'0',
text:'ExtJs',
leaf :false
})
});
createChildTreeNode(tree.root,arry);
return tree;
}
//为某节点创建子节点
function createChildTreeNode(node,childNodes){
for(var i=0;i<childNodes.length;i++){
var childNode=new Ext.tree.TreeNode({
id:childNodes[i].id,
text:childNodes[i].text
});
if(childNodes[i].children!=undefined){
createChildTreeNode(childNode,childNodes[i].children);
}
node.appendChild(childNode);
}
}
//为树创建treeEditor
function createTreeEditor(tree){
var treeEditor=new Ext.tree.TreeEditor(tree,{
allowBlank : false,

blankText : '请输入项目名称',

selectOnFocus : true,
listeners:{'complete':function(){

   }}

});
return treeEditor;
}
//创建菜单
function createContextMenu(node,event) {

var contextMenu;
//如果是根节点
if(node.root!=undefined){
contextMenu=new Ext.menu.Menu({
id:'rootMenu',
items:[{
text:'new',
scope:this,
handler:function(){

        }
      }]
    });
   return contextMenu;
 }
 //如果不是叶子节点
 else if(node.isLeaf()==false){
    contextMenu=new Ext.menu.Menu({
      id:'Menu',
      items:[{
        text:'new',
        scope:this,
        handler:function(){

        } 
      },'-',{
        text:'update',
        scope:this,
        handler:function(){

        }
      },'-',{
        text:'delete',
        scope:this,
        handler:function(){

        }
      }]
    });
   return contextMenu;
 }
 //如果是叶子节点
 else{
      contextMenu=new Ext.menu.Menu({
      id:'leafMenu',
      items:[{
        text:'update',
        scope:this,
        handler:function(){

        }
      },'-',{
        text:'delete',
        scope:this,
        handler:function(){

        }
      }]
    });
   return contextMenu;
 }

}
//显示菜单位置
function showContextMenu(node,event){
var contextMenu=createContextMenu(node,event);
contextMenu.showAt(event.getXY());
}

问题主要是右键菜单达不到预期效果
总是显示else if 那个
[b]问题补充:[/b]
你们说的方法还是不能达到想要的效果

在补充个问题下
怎么让可编辑的grid,编辑完的单元格如果值等于之前的,就没什么变化,如果值不等于之前的就显示出红色

  • 写回答

3条回答 默认 最新

  • zhoujuan520 2009-05-01 15:56
    关注

    [quote]你们说的方法还是不能达到想要的效果 [/quote]

    你拿我的代码试了没有,我都帮你修改出来了,都测试了才放上来的.

    至于你说的第二问题
    你可以看一下 Ext.grid.EditorGridPanel的 afteredit事件,他里面有如下参数
    [code="js"]
    afteredit : ( Object e )
    Fires after a cell is edited.
    grid - This grid
    record - The record being edited
    field - The field name being edited
    value - The value being set//这个是新的值
    originalValue - The original value for the field, before the edit.//这个是原始值
    row - The grid row index
    column - The grid column index
    Listeners will be called with the following arguments:
    e : Object
    An edit event (see above for description)[/code]

    //你可以通过判断两个值是不是一样.一样就 return false; 不一样则 return true;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 对于知识的学以致用的解释
  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败