为什么不检查子节点不在列表视图中显示(仅显示父节点的第一级)? [英] Why not checked child nodes not display in list view(only first level of parent nodes display)?
本文介绍了为什么不检查子节点不在列表视图中显示(仅显示父节点的第一级)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
你好每一个..
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屋!
查看全文