Почему бы не проверить, что дочерние узлы не отображаются в виде списка(отображается только первый уровень родительских узлов)?
всем привет..
я работаю с vb.net 2015 и sql 2014,и у меня есть treeview с 5 уровнями и listview с 2 столбцами(id, name), которые я хочу отправить индекс и текст всех проверенных узлов
в lisview..
это хорошо работает на первом уровне, но никаких детей не отправляют в listview.
до сих пор я пробовал этот код:
спасибо.
Что я уже пробовал:
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
Richard Deeming
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)
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]
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", TextBox10.Text) cmd.Parameters.AddWithValue("@user_id", TextBox7.Text) cmd.ExecuteNonQuery(); End Using
Как только вы это исправите, сделайте себе одолжение и дайте своим элементам управления значимые имена. Может быть ты помнишь что
TextBox42
представляет сейчас но когда вы вернетесь, чтобы отредактировать свой код через шесть месяцев, у вас не будет ни малейшего понятия!