jQuery MiniUI

标题: 请教大侠:Tree加超链在新的Tab里打开问题。我的代码 [打印本页]

作者: therealsun1    时间: 2013-11-20 15:41:25     标题: 请教大侠:Tree加超链在新的Tab里打开问题。我的代码

前台div段:

[attach]3228[/attach]

前台js段:

[attach]3229[/attach]

不知道该如何给tab.url赋值啊。请大侠帮帮忙吧。尿了。。。

作者: therealsun1    时间: 2013-11-20 15:42:38

忘记说了,我的地址是数据库的一个字段的动态地址,要读数据库赋值进去的。。。
作者: factory    时间: 2013-11-20 16:15:20

therealsun1 发表于 2013-11-20 15:42
忘记说了,我的地址是数据库的一个字段的动态地址,要读数据库赋值进去的。。。 ...

你现在的url是什么问题? 设置不了?还是获取不了
作者: therealsun1    时间: 2013-11-20 16:22:26

factory 发表于 2013-11-20 16:15
你现在的url是什么问题? 设置不了?还是获取不了

感谢老大出面!

我现在的问题是设置不了点击后跳转的路径。

路径都是在我数据库存着。

我在想既然tree-mini有这些属性 idField="MenuID" textField="MenuName" parentField="FatherID"
那么有没有跳转的路径的属性呢,可是我查了下api好像没有。怎么办啊老大?
作者: factory    时间: 2013-11-20 16:30:20

therealsun1 发表于 2013-11-20 16:22
感谢老大出面!

我现在的问题是设置不了点击后跳转的路径。

打开页面是靠tab打开的

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

所以你检查下,是否tab.url 没有获取成功还是什么
作者: therealsun1    时间: 2013-11-20 16:33:27

factory 发表于 2013-11-20 16:30
打开页面是靠tab打开的

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

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

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

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

求老大赐教。
作者: factory    时间: 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,不需要再去多次从后台获取了
作者: therealsun1    时间: 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);
    }
作者: therealsun1    时间: 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);
        }
作者: factory    时间: 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,给到这个节点属性.再把树返回
作者: therealsun1    时间: 2013-11-25 10:58:27

factory 发表于 2013-11-21 18:11
1.ajax获取

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

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

alert都aler不出来呢,alert出来的是undefined:
[attach]3272[/attach]

前台也设置了MenuID了:

[attach]3273[/attach]

通过这个例子,学到了不少知识,谢谢老大。

作者: factory    时间: 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];
作者: therealsun1    时间: 2013-11-25 14:31:36

factory 发表于 2013-11-25 11:00
node 里面其实是你的数据了
你应该node.MenuID;

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

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

再次感谢老大!!!
作者: factory    时间: 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就可以了




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