jstree:通过id选择节点

jstree: How to select a node by id

本文关键字:选择 节点 id 通过 jstree      更新时间:2023-09-26

我知道我的问题有很多解决方案,但没有一个适合我。我的情况是这样的:我想通过编程逐个节点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

我的问题是:

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

请教育我,谢谢。

下面是关于我的问题的附加信息:

在用户点击jstree之前,jstree中所有节点的state参数值都为null;所以我想选择一个节点的id,在用户点击jtree之前初始化节点状态。

  1. 你把javascript函数放在哪里?我认为它需要在头部的脚本标签(或在一个包含的js文件,在头部)。
  2. 如果你查看源代码,你在javascript中看到了什么?什么是客户端ID,什么是节点ID(在HTML源代码中)。

另外,您可能需要更改:

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

:

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

为您的节点设置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