jstree:如何通过id选择节点

时间:2014-07-04 06:22:27

标签: javascript jquery html vb.net jstree

我知道我的问题有很多解决方案,但对我来说没有人可以。 这是我的情况:我想以编程方式按节点id选择节点, 在.ascx文件中定义了一个函数:

function InitializeNodeState(nodeID) 
{
    $('#<%=ClientID %>').jstree("select_node", "#"+nodeID);
};

并在vb文件中定义了另一个函数来调用上面的函数:

Public Sub SelectedRooteNodeToInitializeState(node As TreeNode)
    Dim rooteNode As TreeNode = Me.Nodes(0)
    If rooteNode.id = node.id Then
       Page.ClientScript.RegisterStartupScript(Me.GetType(),   "script","InitializeNodeState(" + rooteNode.id + ");", True)        
    End If
End Sub

我的问题是:

  1. JavaScript运行时错误:The value of the property 'InitializeNodeState' is null or undefined, not a Function object.
  2. 句子$('#<%=ClientID %>').jstree("select_node", "#"+nodeID);似乎不起作用。
  3. 请教育我,谢谢。

    以下是有关我的问题的其他信息:

    jstree中所有节点的state参数值为null,直到用户单击jstree为止, 所以我想在用户点击jstree之前按id选择一个节点来初始化节点状态。

2 个答案:

答案 0 :(得分:0)

  1. 你在哪里放置javascript函数。我认为它需要位于头部的脚本标签中(或者包含在头文件中的js文件中)。
  2. 如果您查看来源,您在javascript上看到了什么?您认为什么是客户端ID,您认为什么是nodeID(在HTML源代码中)。
  3. 此外,您可能需要更改此内容:

    Page.ClientScript.RegisterStartupScript(Me.GetType(),   "script","InitializeNodeState(" + rooteNode.id + ");", True) 
    

    到此:

    Page.ClientScript.RegisterStartupScript(Me.GetType(),   "script","InitializeNodeState('" + rooteNode.id + "');", True) 
    

答案 1 :(得分:0)

为您的节点设置runat服务器
例如

<tr runat="server" id="myNode"></tr>


$('#<%=yourElement.ClientID %>').jstree("select_node", "#"+nodeID);

    Public Sub SelectedRooteNodeToInitializeState(node As TreeNode)
        Dim rooteNode As TreeNode = Me.Nodes(0)
        If rooteNode.ClientID = myNode.ClientID Then
           Page.ClientScript.RegisterStartupScript(Me.GetType(),   "script","InitializeNodeState(" + myNode.ClientID + ");", True)        
        End If
    End Sub