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