4
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并添加了 class addClass="dynatree-selected",但是当我调用时,node.tree.getSelectedNodes()我得到了[].

如何在服务器端设置以便选择一些节点?

我也尝试在 TreeNode 属性中添加选择并设置为 true,但这对我没有帮助。

4

2 回答 2

1

遵循 Alper 的示例后,您可以将 selectedKeys 保存到隐藏字段,从而在服务器端使这些值对您可用:

var arraySelKeys = selectedKeys.toString().split(",");
$("[id$=_hdnSelKeys]").val(arraySelKeys.toString());
于 2012-08-09T13:52:46.960 回答
1

dynatree 文档页面(在第 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

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

于 2012-07-31T19:00:19.467 回答