如何在dynatree中选择节点

时间:2012-06-12 06:56:29

标签: javascript jquery model-view-controller dynatree

tree.dynatree({
        initAjax: {
            url: "../Users/GetTree"
        },
        checkbox: true,
        selectMode: 2,
        fx: { height: "toggle", duration: 200 },
        persist: true,
        clickFolderMode: 1,
        autoFocus: false,

         onClick: function (node, event) {
           ....
         }
   }    

在服务器端我有类TreeNode

 public class TreeNode
 { 
      .....

      public TreeItemsAttr attr { get; set; }

      public string addClass { get; set; }
 }

和类TreeItemsAttr

 public class TreeItemsAttr
{
    public string id { get; set; }

    public bool canHaveSubs { get; set; }

    public bool selectable { get; set; }

    public bool isSelected { get; set; }

    public string docDate { get; set; }
}

因此,在我的操作中,我设置了一些树节点isSelected=true并添加了类addClass="dynatree-selected",但是当我调用node.tree.getSelectedNodes()时,我得到[]

如何在服务器端进行设置,以便选择某些节点?

我也尝试将TreeNode属性的select和setup添加为true,但它对我没有帮助。

2 个答案:

答案 0 :(得分:1)

dynatree document page中(在章节:5.3处理选择事件中),有一个针对该目标的样本。

onSelect: function(flag, node) {
        if( ! flag )
            alert("You deselected node with title " + node.data.title);
        var selectedNodes = node.tree.getSelectedNodes();
        var selectedKeys = $.map(selectedNodes, function(node){
            return node.data.key;
        });
        alert("Selected keys: " + selectedKeys.join(", "));
    }

,结果页面为:http://wwwendt.de/tech/dynatree/doc/sample-select.html

这种方式在客户端工作,但我认为您可以将选定的变量发送到您的服务器。

答案 1 :(得分:1)

在您按照Alper的示例后,您可以将selectedKeys保存到隐藏字段,在服务器端为您提供这些值:

var arraySelKeys = selectedKeys.toString().split(",");
$("[id$=_hdnSelKeys]").val(arraySelKeys.toString());