jQuery MiniUI

标题: contextmenu 右键菜单 [打印本页]

作者: zhangying    时间: 2014-4-16 09:53:59     标题: contextmenu 右键菜单

mini-contextmenu  右键菜单增删改的功能,我如何让叶子节点只有删改,不要新增选项呢?

作者: felt    时间: 2014-4-16 09:55:53

把增加去掉不就是了吗。。
作者: zhangying    时间: 2014-4-16 09:57:27

felt 发表于 2014-4-16 09:55
把增加去掉不就是了吗。。

飞叶子节点   父节点要新增啊
作者: felt    时间: 2014-4-16 10:00:19

本帖最后由 felt 于 2014-4-16 10:01 编辑
zhangying 发表于 2014-4-16 09:57
飞叶子节点   父节点要新增啊

http://www.miniui.com/demo/#src=datagrid/contextmenu.html
http://www.miniui.com/demo/#src=tree/contextmenu.html
参考这2个demo,监听onbeforeopen事件处理
作者: zhangying    时间: 2014-4-16 10:06:54

felt 发表于 2014-4-16 09:55
把增加去掉不就是了吗。。

有父子节点。父节点要新增,子节点不要新增。
<li name="add">
                                        <span iconCls="icon-add">新增节点</span>
                                        <ul>
                                            <li onclick="onAddBefore">插入节点前</li>               
                                    <li onclick="onAddAfter">插入节点后</li>       
                                                <li onclick="onAddNode">插入子节点</li>                     
                                        </ul>
                                </li>
我用getByName方法去取值,var addItem = mini.getbyName("add", menu);  然后将其隐藏 if(tree.isLeaf ( node )){
                addItem.hide();
        } 结果,他说我的addItem没有定义。我换成 <li name="add" iconCls="icon-add">新增节点  这样才有效。可是这样的话,菜单的结构就乱了。求解:如何让父节点有新增,叶子节点没有新增
作者: factory    时间: 2014-4-16 10:10:17

zhangying 发表于 2014-4-16 10:06
有父子节点。父节点要新增,子节点不要新增。

                                        新增节点

上面说了,用onbeforeopen事件处理,

你上面的例子看了没? 不同节点,显示不同的菜单内容
作者: felt    时间: 2014-4-16 10:12:40

zhangying 发表于 2014-4-16 10:06
有父子节点。父节点要新增,子节点不要新增。

                                        新增节点

<span iconCls="icon-add" name="add">新增节点</span>
作者: zhangying    时间: 2014-4-16 10:15:26

factory 发表于 2014-4-16 10:10
上面说了,用onbeforeopen事件处理,

你上面的例子看了没? 不同节点,显示不同的菜单内容 ...

<li>
                                        <span iconCls="icon-add">新增节点</span>
                                        <ul>
                                            <li onclick="onAddBefore">插入节点前</li>               
                                    <li onclick="onAddAfter">插入节点后</li>       
                                                <li onclick="onAddNode">插入子节点</li>                     
                                        </ul>
                                </li>
像这种方式的菜单,我在li上加name,用getByName取值是没定义。我根本就不能控制他是隐藏
作者: factory    时间: 2014-4-16 10:18:54

zhangying 发表于 2014-4-16 10:15
新增节点
                                       
                                            插入节点前               

你这跟例子没区别

例子不是一样可以的? 通过name获取到菜单项,再控制显示隐藏
作者: zhangying    时间: 2014-4-16 10:21:55

felt 发表于 2014-4-16 10:12
新增节点

呵呵,原来是这样的啊,谢谢
作者: zhangying    时间: 2014-4-16 10:27:07

felt 发表于 2014-4-16 10:12
新增节点

我从父节点往子节点依次点击右键是正常的父节点有新增子节点没有。可是,我从子节点开始往上点击右键测试,发现父节点和子节点都没有新增菜单。这是为什么呢
作者: felt    时间: 2014-4-16 10:31:09

zhangying 发表于 2014-4-16 10:27
我从父节点往子节点依次点击右键是正常的父节点有新增子节点没有。可是,我从子节点开始往上点击右键测试 ...

没发现你说的问题,把代码贴一下
作者: zhangying    时间: 2014-4-16 10:33:07

本帖最后由 zhangying 于 2014-4-16 10:34 编辑
felt 发表于 2014-4-16 10:31
没发现你说的问题,把代码贴一下

        <div class="mini-fit">
                 <ul id="tree1" class="mini-tree" url="${ctx }/template/getData.do" style="width:200px;padding:5px;"
                 showTreeIcon="true" textField="busDictionaryValue" idField="id" parentField="busDdictionaryParentId" resultAsTree="false"         
                 contextMenu="#treeMenu" expandOnLoad="true"
                 >
                 </ul>
                  
                         <ul id="treeMenu" class="mini-contextmenu"  onbeforeopen="onBeforeOpen">        
                           <li class="separator"></li>
                           <li>
                                        <span name="add" iconCls="icon-add">新增节点</span>
                                        <ul>
                                            <li>插入节点前</li>               
                                    <li>插入节点后</li>        
                                                <li>插入子节点</li>                     
                                        </ul>
                                </li>
                                <li name="edit" iconCls="icon-edit">编辑节点</li>
                                <li name="remove" iconCls="icon-remove">删除节点</li>        
                         </ul>
       </div>
    </div>
               

        
        
    <script type="text/javascript">
            function onAddBefore(e) {
                var tree = mini.get("tree1");
                var node = tree.getSelectedNode();
        
                var newNode = {};
                tree.addNode(newNode, "before", node);
            }
            function onAddAfter(e) {
                var tree = mini.get("tree1");
                var node = tree.getSelectedNode();
        
                var newNode = {};
                tree.addNode(newNode, "after", node);
            }
            function onAddNode(e) {
                var tree = mini.get("tree1");
                var node = tree.getSelectedNode();
        
                var newNode = {};
                tree.addNode(newNode, "add", node);
            }
            function onEditNode(e) {
                var tree = mini.get("tree1");
                var node = tree.getSelectedNode();
               
                tree.beginEdit(node);            
            }
            function onRemoveNode(e) {
                var tree = mini.get("tree1");
                var node = tree.getSelectedNode();
        
                if (node) {
                    if (confirm("确定删除选中节点?")) {
                        tree.removeNode(node);
                    }
                }
            }
                function onBeforeOpen(e) {
                var menu = e.sender;
                var tree = mini.get("tree1");
               
                var node = tree.getSelectedNode();
               
                if (!node) {
                    e.cancel = true;
                    return;
                }
                if (node && node.text == "Base") {
                    e.cancel = true;
                    //阻止浏览器默认右键菜单
                    e.htmlEvent.preventDefault();
                    return;
                }
               
        ////////////////////////////////
        debugger;
        var addItem = mini.getbyName("add", menu);
        var editItem = mini.getbyName("edit", menu);
        var removeItem = mini.getbyName("remove", menu);
        editItem.show();
        removeItem.enable();
        
    if(tree.isLeaf ( node )){
                addItem.hide();
        }  
        if (node.id == "forms") {
            editItem.hide();
        }
        if (node.id == "lists") {
            removeItem.disable();
        }
        }
作者: felt    时间: 2014-4-16 10:41:14

zhangying 发表于 2014-4-16 10:33
...

加一下addItem.show();
没有的话跑一次隐藏的以后不都是隐藏了吗

作者: zhangying    时间: 2014-4-16 10:47:54

felt 发表于 2014-4-16 10:41
加一下addItem.show();
没有的话跑一次隐藏的以后不都是隐藏了吗

ok啦,谢谢你哦




欢迎光临 jQuery MiniUI (http://miniui.com/discuss/) Powered by Discuz! X2