为什么不检查子节点不在列表视图中显示(仅显示父节点的第一级)? [英] Why not checked child nodes not display in list view(only first level of parent nodes display)?

查看:63
本文介绍了为什么不检查子节点不在列表视图中显示(仅显示父节点的第一级)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好每一个..

i我正在使用vb.net 2015和sql 2014我有一个5级的树视图和listview有2列(id,name)我想要发送索引和所有已检查节点的文本

到lisview ..



它在第一级工作正常,但任何检查过的孩子都没有发送到列表视图。

到目前为止,我尝试了这段代码:



谢谢。



< b>我尝试了什么:



hello every one..
i am working with vb.net 2015 and sql 2014 and i have a treeview with 5 level and listview with 2 column(id,name) that i want send index and text of all checked nodes
to lisview..

it is work well in first level but any children checked not send to listview.
so far i was tried this code:

thanks.

What I have tried:

Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
    ListView1.Items.Clear()
    'AddToList(TreeView1.Nodes)
    AddToList1()
    Dim constr As String = (ConfigurationManager.ConnectionStrings("conStr").ConnectionString)
    Dim con As New SqlConnection(constr)
    con.Open()
    For Each item As ListViewItem In ListView1.Items
        Dim cmd As SqlCommand = New SqlCommand("Insert Into F_PERMENU(INDEX_F,parent_node,compid,user_id) Values ('" & item.Text & "','" & item.SubItems.Item(1).Text & "','" & TextBox10.Text & "','" & TextBox7.Text & "')", con)
        cmd.ExecuteNonQuery()
    Next
    con.Close()
End Sub

Private Sub AddToList1()
    ListView1.Columns.Clear()
    Dim TempStr(1) As String
    Dim TempNode As New ListViewItem
    ' Show "hidden" text
    ListView1.ShowItemToolTips = True
    ' Set columnar mode
    ListView1.View = View.Details
    ' Set column header
    ListView1.Columns.Add("ایندکس", 80)
    ListView1.Columns.Add("متن", 120)
    ' Remove previous items
    ListView1.Items.Clear()
    For Each tnd As TreeNode In TreeView1.Nodes
        If tnd.Checked Then
            ' Add two items
            TempStr(0) = tnd.Index
            TempStr(1) = tnd.Text
            TempNode = New ListViewItem(TempStr)
            ListView1.Items.Add(TempNode)
        End If
    Next
End Sub

推荐答案

你好Ë verey Body ..

终于,我能用这个函数解决问题:



Hi Everey Body..
finally, I was able to solve the problem with this function:

Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
    ListView1.Items.Clear()
    AddToList1()
    Dim constr As String = (ConfigurationManager.ConnectionStrings("conStr").ConnectionString)
    Dim con As New SqlConnection(constr)
    con.Open()
    For Each item As ListViewItem In ListView1.Items
        Dim cmd As SqlCommand = New SqlCommand("Insert Into F_PERMENU(INDEX_F,parent_node,compid,user_id) Values ('" & item.Text & "','" & item.SubItems.Item(1).Text & "','" & TextBox10.Text & "','" & TextBox7.Text & "')", con)
        cmd.ExecuteNonQuery()
    Next
    con.Close()
End Sub

Private Sub AddToList1()
        ListView1.Columns.Clear()
        Dim TempStr(1) As String
        Dim TempNode As ListViewItem
        ' Show "hidden" text
        ListView1.ShowItemToolTips = True
        ' Set columnar mode
        ListView1.View = View.Details
        ' Set column header
        ListView1.Columns.Add("ایندکس", 80)
        ListView1.Columns.Add("متن", 120)
        ' Remove previous items
        ListView1.Items.Clear()
        For Each tnd As TreeNode In GET_ALL_PARENT_AND_CHILD_NODES(TreeView1)
            If tnd.Checked Then
                ' Add two items
                TempStr(0) = tnd.Index
                TempStr(1) = tnd.Text
                TempNode = New ListViewItem(TempStr)
                ListView1.Items.Add(TempNode)
            End If
        Next
    End Sub

    Public Function GET_ALL_PARENT_AND_CHILD_NODES(ByVal tree As TreeView) As List(Of TreeNode)
        Dim nodes As New List(Of TreeNode)
        Dim queue As New Queue(Of TreeNode)
        Dim top As TreeNode
        Dim nod As TreeNode
        For Each top In tree.Nodes
            queue.Enqueue(top)
        Next
        While (queue.Count > 0)
            top = queue.Dequeue
            nodes.Add(top)
            For Each nod In top.Nodes
                queue.Enqueue(nod)
            Next
        End While
        GET_ALL_PARENT_AND_CHILD_NODES = nodes
    End Function


谢谢理查德希望你的回复....



我正在纠正这个:



thank you Richard deeming for your reply....

I am correcting this:

Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
       ListView1.Items.Clear()
       'AddToList(TreeView1.Nodes)
       AddToList1()
       Dim constr As String = (ConfigurationManager.ConnectionStrings("conStr").ConnectionString)
       Dim con As New SqlConnection(constr)
       con.Open()
       For Each item As ListViewItem In ListView1.Items
           'Dim cmd As SqlCommand = New SqlCommand("Insert Into F_PERMENU(INDEX_F,parent_node,compid,user_id) Values ('" & item.Text & "','" & item.SubItems.Item(1).Text & "','" & compidtxt.Text & "','" & user_idtxt.Text & "')", con)
           'cmd.ExecuteNonQuery()
           Using cmd As New SqlCommand("Insert Into F_PERMENU (INDEX_F,parent_node,compid,user_id) Values (@INDEX_F, @parent_node, @compid, @user_id)", con)
               cmd.Parameters.AddWithValue("@INDEX_F", item.Text)
               cmd.Parameters.AddWithValue("@parent_node", item.SubItems.Item(1).Text)
               cmd.Parameters.AddWithValue("@compid", compidtxt.Text)
               cmd.Parameters.AddWithValue("@user_id", user_idtxt.Text)
               cmd.ExecuteNonQuery()
           End Using
       Next
       con.Close()
       DataGridView1.DataSource = masterBindingSource
       DataGridView2.DataSource = detailsBindingSource
   End Sub

Private Sub AddToList1()
       ListView1.Columns.Clear()
       Dim TempStr(1) As String
       Dim TempNode As ListViewItem
       ' Show "hidden" text
       ListView1.ShowItemToolTips = True
       ' Set columnar mode
       ListView1.View = View.Details
       ' Set column header
       ListView1.Columns.Add("ایندکس", 80)
       ListView1.Columns.Add("متن", 120)
       ' Remove previous items
       ListView1.Items.Clear()
       For Each tnd As TreeNode In GET_ALL_PARENT_AND_CHILD_NODES(TreeView1)
           If tnd.Checked Then
               ' Add two items
               TempStr(0) = tnd.Index
               TempStr(1) = tnd.Text
               TempNode = New ListViewItem(TempStr)
               ListView1.Items.Add(TempNode)
           End If
       Next
   End Sub

Public Function GET_ALL_PARENT_AND_CHILD_NODES(ByVal tree As TreeView) As List(Of TreeNode)
       Dim nodes As New List(Of TreeNode)
       Dim queue As New Queue(Of TreeNode)
       Dim top As TreeNode
       Dim nod As TreeNode
       For Each top In tree.Nodes
           queue.Enqueue(top)
       Next
       While (queue.Count > 0)
           top = queue.Dequeue
           nodes.Add(top)
           For Each nod In top.Nodes
               queue.Enqueue(nod)
           Next
       End While
       GET_ALL_PARENT_AND_CHILD_NODES = nodes
   End Function


这篇关于为什么不检查子节点不在列表视图中显示(仅显示父节点的第一级)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆