jQuery MiniUI

 找回密码
 立即注册
查看: 5178|回复: 13
打印 上一主题 下一主题

请教大侠:Tree加超链在新的Tab里打开问题。我的代码 [复制链接]

Rank: 1

跳转到指定楼层
楼主
发表于 2013-11-20 15:41:25 |只看该作者 |正序浏览
前台div段:



前台js段:



不知道该如何给tab.url赋值啊。请大侠帮帮忙吧。尿了。。。
附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

Rank: 8Rank: 8

14#
发表于 2013-11-25 14:44:28 |只看该作者
therealsun1 发表于 2013-11-25 14:31
哈哈,真的解决了,老大威武!

先这么用着,我想用你第2种方法,就是在后台一次性全部复制,不用每次 ...

后台大概是这样的,
比如你先查tree的那张数据库表,把tree的数据查询出来
[{id:1:text:a},{id:2:text:b}]

遍历这个tree的数组,把id为1的节点的url查出来, 然后赋给这个节点
完了就是[{id:1,text:a,url:"a.html"},{id:2,text:b,url:"b.html"}]
然后再返回给前台的tree控件

这样你的节点内直接就已经有了url,当要打开tab的时候,直接 tab.url = node.url就可以了

Rank: 1

13#
发表于 2013-11-25 14:31:36 |只看该作者
factory 发表于 2013-11-25 11:00
node 里面其实是你的数据了
你应该node.MenuID;

哈哈,真的解决了,老大威武!

先这么用着,我想用你第2种方法,就是在后台一次性全部复制,不用每次点的时候才去查找url,如您有时间能否贴点代码俺学习学习呢呵呵。

再次感谢老大!!!

Rank: 8Rank: 8

12#
发表于 2013-11-25 11:00:43 |只看该作者
therealsun1 发表于 2013-11-25 10:58
感谢老大耐心指点,目前已经可以获取url属性了,还差一个小问题,就是获取不了node.id:

alert都aler不 ...

node 里面其实是你的数据了
你应该node.MenuID;

直接这样就行了

如果按照你的意思,应该是这样
var idField = tree.getIdFied();
var id = node[idField];

Rank: 1

11#
发表于 2013-11-25 10:58:27 |只看该作者
factory 发表于 2013-11-21 18:11
1.ajax获取

先获取到你点击的那个节点的id:

感谢老大耐心指点,目前已经可以获取url属性了,还差一个小问题,就是获取不了node.id:

alert都aler不出来呢,alert出来的是undefined:


前台也设置了MenuID了:



通过这个例子,学到了不少知识,谢谢老大。
附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

Rank: 8Rank: 8

10#
发表于 2013-11-21 18:11:09 |只看该作者
therealsun1 发表于 2013-11-21 17:31
目前我用的后台绑定方法:

public void loadmenu()

1.ajax获取

先获取到你点击的那个节点的id:
$.ajax({
                url: "../data/FormService.aspx?method=getUrl",
                type: "post",
                data: { submitData: id},
                success: function (text) {
                    //....获取到这个节点url了,再把url赋值给tab
                }
            });

2. 你就后台先查询出一棵树,然后再遍历,把树的节点id相关的url,给到这个节点属性.再把树返回

Rank: 1

9#
发表于 2013-11-21 17:31:52 |只看该作者
factory 发表于 2013-11-20 17:07
你这样肯定不对.因为页面加载的时候,解析到你这段服务端获取url的代码的时候node.id还不存在

你这样做

目前我用的后台绑定方法:

public void loadmenu()
        {
            ArrayList folders = new XMenu().GetMenu();
            String json = JSON.Encode(folders);
            Response.Write(json);
        }

Rank: 1

8#
发表于 2013-11-21 17:30:49 |只看该作者
factory 发表于 2013-11-20 17:07
你这样肯定不对.因为页面加载的时候,解析到你这段服务端获取url的代码的时候node.id还不存在

你这样做

做了一天了,还是没做出来,老大能否给个代码看看啊,比如数据库menuid,menuname,fatherid,fathername,url

我怎么做才可以用tab获取url字段啊?

//树菜单方法
    function onNodeSelect(e)
    {
        var node = e.node;
        var isLeaf = e.isLeaf;
        if (isLeaf)
        {
            showTab(node);
        }
    }
    //选项卡方法
    function showTab(node)
    {
        var tabs = mini.get("XTabs");
        var id = "tab$" + node.id;
        var tab = tabs.getTab(id);
        if (!tab)
        {
            tab = {};
            tab._nodeid = node.id;
            tab.name = id;
            tab.title = node.text;
            tab.showCloseButton = true;
            tab.url = "c.html";
            tabs.addTab(tab);
        }
        tabs.activeTab(tab);
    }

Rank: 8Rank: 8

7#
发表于 2013-11-20 17:07:54 |只看该作者
therealsun1 发表于 2013-11-20 16:33
恩!就是这样的情况老大。

我就是不知道如何获取tree传过来的数据里的信息。

你这样肯定不对.因为页面加载的时候,解析到你这段服务端获取url的代码的时候node.id还不存在

你这样做
1.前台用ajax去服务端根据node.id去后台获取url

2.你在后台,根据tree的id,去查询数据库里面的url,然后把url给到tree的节点上
比如:{id:1,nodeName:"aaa",url:"/........"}
整合完成之后,把tree数据返回给前台的tree.这样就能直接根据node获取到里面的url,不需要再去多次从后台获取了

Rank: 1

6#
发表于 2013-11-20 16:33:27 |只看该作者
factory 发表于 2013-11-20 16:30
打开页面是靠tab打开的

点击tree,只不过把tree的一些信息传递给tab,tab根据他去打开对应页面

恩!就是这样的情况老大。

我就是不知道如何获取tree传过来的数据里的信息。

因为那个数据库里存着网址信息。

求老大赐教。

Archiver|普加软件

GMT+8, 2024-6-22 04:18 , Processed in 1.034847 second(s), 10 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部