Получить выбранный идентификатор узла из radtreeview (заполняется из SQL server)
У меня есть TreeView, который получает данные из таблицы Sql Server. Мой код успешно заполняет родительские и дочерние узлы. Я только хочу знать, как получить идентификатор узла в текстовом поле, когда я выбираю любой узел.
имя столбца идентификатора : cabinetID
Вот код, который я использую для заполнения TreeView:
public void loadContainerTree() { repositoryid = Convert.ToInt32(txtRepositoryID.Text); conn.Open(); SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM tblCabinets WHERE ParentID IS NULL AND repositoryID = '" + repositoryid + "'", conn); DataTable dt = new DataTable(); adapter.Fill(dt); RadTreeNode parentNode; foreach (DataRow dr in dt.Rows) { parentNode = ContainersTree.Nodes.Add(dr["cabinetName"].ToString()); PopulateTreeView(dr["cabinetID"].ToString(), parentNode); } ContainersTree.ExpandAll(); conn.Close(); } private void PopulateTreeView(string parentid, RadTreeNode parentNode) { SqlDataAdapter adapterchild = new SqlDataAdapter("SELECT * FROM tblCabinets WHERE ParentID = '" + parentid + "' AND repositoryID = '" + repositoryid + "'", conn); DataTable dtchild = new DataTable(); adapterchild.Fill(dtchild); foreach (DataRow dr in dtchild.Rows) { RadTreeNode childNode; if (parentNode == null) { childNode = ContainersTree.Nodes.Add(dr["cabinetName"].ToString()); } else { childNode = parentNode.Nodes.Add(dr["cabinetName"].ToString()); PopulateTreeView(dr["cabinetID"].ToString(), childNode); } getID = ContainersTree.Nodes.Add(dr["cabinetID"].ToString()); } }
Что я уже пробовал:
Кабинет.Text = ContainersTree.SelectedNode[0];
Richard Deeming
SqlDataAdapter adapterchild = new SqlDataAdapter("SELECT * FROM tblCabinets WHERE ParentID = '" + parentid + "' AND repositoryID = '" + repositoryid + "'", conn);
Не делай этого так!
Ваш код потенциально уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]
SqlDataAdapter adapterchild = new SqlDataAdapter("SELECT * FROM tblCabinets WHERE ParentID = @ParentID AND repositoryID = @RepositoryID", conn); adapterchild.SelectCommand.Parameters.AddWithValue("@ParentID", parentid); adapterchild.SelectCommand.Parameters.AddWithValue("@RepositoryID", repositoryid);
Emad Ahmed
Спасибо, я всегда использую параметризованный запрос, как вы уже упоминали, но я просто взял этот код из учебника и намеревался изменить его позже.
Emad Ahmed
Но есть ли у вас ответ на мой первоначальный вопрос????