javascript - 如何在加载 VB ASP 时加载 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
    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 内的 a 元素。

确保为 li 的直接 a 子级设置该类。

关于javascript - 如何在加载 VB ASP 时加载 jstree 复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34816102/

相关文章:

javascript - Angularjs + kendo-ui Treeview

javascript - AJAX 调用并在单击时设置事件类

jquery - 在我附加 jquery 代码以创建可扩展菜单后,我的 <a> 链接无法响应

asp.net - SQL Server 登录前握手确认错误

javascript - 如何使用 Bootstrap 将数据传递到模态

jquery - ASP.NET Jquery 自动完成

javascript - 如何在此函数中获取父 ID?

javascript - 使用纯 javascript 获取元素的尺寸和位置

javascript - 将触发多个悬停div的JS代码

javascript - 从 PHP 文件中提取要显示的单选按钮的值