dijit树和焦点节点

时间:2010-01-23 23:37:58

标签: tree focus dojo

我无法让focusNode()或expandNode()得到工作。我也试过切换回dojo 1.32甚至1.3,没有差别1.4。我用firebug调试,节点是一个有效的树节点,没有错误发生,但节点不会聚焦。非常感谢帮助!

<head>
<script type="text/javascript">
    dojo.declare("itcTree",[dijit.Tree], {
         focusNodeX : function(/* string */ id)  {
                   var node=this._itemNodesMap[id];
                   this.focusNode(node);
         }
     });
    </script>
</head>

<body class="tundra">
    <div dojoType="dojo.data.ItemFileReadStore" jsId="continentStore" url="countries.json">
    </div>
    <div dojoType="dijit.tree.ForestStoreModel" jsId="continentModel" store="continentStore"
    query="{type:'continent'}" rootId="continentRoot" rootLabel="Continents"
    childrenAttrs="children">
    </div>
    <div dojoType="itcTree" id="mytree" model="continentModel" openOnClick="true">
        <script type="dojo/method" event="onClick" args="item">
            dijit.byId('mytree').focusNodeX('AF');
        </script>
    </div>
     <p>
    <button onclick="dijit.byId('mytree').focusNode('DE');">klick</button>
    </p>
</body>

3 个答案:

答案 0 :(得分:1)

focusNode()将dijit.TreeNode作为参数,而不是文本字符串。

可能你想使用Tree.attr(“selectedItem”,“DE”)。

答案 1 :(得分:1)

您必须按以下方式使用set方法:

tree.set('path', ['2', '1', '7']);

假设2,1,7是给定节点的路径。我必须提到这些是数据存储项的标识。

访问此处获取更多信息: http://dojotoolkit.org/reference-guide/1.7/dijit/Tree-examples.html

答案 2 :(得分:0)

是的,我发现相同,你需要使用node [0]

var itemNode = tree._itemNodesMap["some_id"];
tree.focusNode(itemNode[0]);

问题是之前选择的节点继续关注两个。

关于这一点的任何想法。