Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在加载VB ASP时加载jstree复选框_Javascript_Jquery_Asp.net_Vb.net_Jstree - Fatal编程技术网

Javascript 如何在加载VB ASP时加载jstree复选框

Javascript 如何在加载VB ASP时加载jstree复选框,javascript,jquery,asp.net,vb.net,jstree,Javascript,Jquery,Asp.net,Vb.net,Jstree,我正在尝试使用ASP加载jstree复选框。代码隐藏获取一个树节点并填充一个列表项供jstree使用。在这个过程中,有一些被标识为“Checked”的节点,我将类属性jstree clicked添加到列表项中。但是,当页面加载时,它没有任何效果。请让我知道如何使用预先选中的复选框填充这些复选框。我有以下在我的后端 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

我正在尝试使用ASP加载jstree复选框。代码隐藏获取一个树节点并填充一个列表项供jstree使用。在这个过程中,有一些被标识为“Checked”的节点,我将类属性jstree clicked添加到列表项中。但是,当页面加载时,它没有任何效果。请让我知道如何使用预先选中的复选框填充这些复选框。我有以下在我的后端

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim tNode As TreeNode
    Dim treeView As New TreeView
    Dim tNodeCollection As New TreeNodeCollection
    tNodeCollection = treeView.Nodes

    ' Code to generate and store within
    ' a System.Web.UI.WebControls.TreeView object
    ' ...
    ' ...
    ' ...

    repeater.DataSource = tNodeCollection 
    repeater.DataBind()
End Sub

Protected Sub repeater_ItemDataBound(sender As Object, e As RepeaterItemEventArgs)
    Dim tNode As TreeNode
    Dim li As New HtmlGenericControl
    Dim ul As New HtmlGenericControl("ul")
    tNode = e.Item.DataItem

    If (tNode Is Nothing) Then
        Return
    End If

    li = e.Item.FindControl("listItem")
    li.ID = tNode.Value
    li.InnerHtml = tNode.Text
    If tNode.Checked Then
        li.Attributes.Add("rel", "true")
    End If

    If tNode.ChildNodes.Count > 0 Then
        li.Controls.Add(ul)
        searchChildNodes(tNode.ChildNodes, ul)
    End If
End Sub

Private Sub searchChildNodes(childNodes As TreeNodeCollection, ul As HtmlGenericControl)
    Dim tNode As TreeNode
    For Each tNode In childNodes
        Dim li As New HtmlGenericControl("li")
        li.ID = tNode.Value
        li.InnerHtml = tNode.Text
        ul.Controls.Add(li)
        If tNode.ChildNodes.Count > 0 Then
            Dim unorderedList As New HtmlGenericControl("ul")
            li.Controls.Add(unorderedList)
            searchChildNodes(tNode.ChildNodes, unorderedList)
        End If
    Next
End Sub
下面是代码的aspx部分

<div id="myTreeNode" > 
    <asp:Repeater ID="rptr" runat="server" EnableViewState="False" OnItemDataBound="repeater_ItemDataBound" >
    <headerTemplate>
        <ul>
    </headerTemplate>
    <ItemTemplate>
        <li id="listItem" runat="server"></li>
    </ItemTemplate>
    <FooterTemplate>
        </ul>
    </FooterTemplate>
    </asp:Repeater>
</div>


应该添加
jstree clicked
类的不是
li
元素(我在这一行看到:
li.Attributes.add(“class”,“jstree clicked”)
),而是
li
中的
元素


确保将该类设置为javascript文件中
li

的立即
a
子类,然后jsTree检查属性,并在加载所有内容后预选复选框。这将适当地选中该复选框。如上所述,这避免了只处理CSS,而是处理整个节点

$("#myTreeNode").bind('ready.jstree', function (event, data) {
    var $tree = $(this);
    $($tree.jstree().get_json($tree, {
        flat: true
    })).each(function () {
    var checked = $(this).attr('rel');
    var node;
    if( checked == "true"){
        node = $("#myTreeNode").jstree().select_node(this.id);
    }
});
});

由于
a
元素是从jsTree插件添加的,我需要通过jQuery设置
a
元素类吗?如果是这样,那么什么jsTree函数适合调用呢?只需将类添加到
a
元素,jsTree就会处理css。但我发现了一个问题——这只会可视化选中的节点,但如果用户尝试取消选中这些节点,则无法正常工作。为了让用户能够做到这一点,我看到了两个选项:1)设置树的配置(例如JSON),然后在初始化时将其提供给jsTree;刚刚设置了
“state”:{“selected”:true}
用于要预选的节点;或者2)在jsTree初始化之后访问节点,并使用
$(“#yourtreeid”).jsTree()选择它们。选择_节点
方法。检查: