【发布时间】:2019-03-13 05:45:04
【问题描述】:
我有一个从 Sql Server 表中获取数据的 TreeView。我的代码成功填充父节点和子节点。 我只想知道当我选择任何节点时如何在文本框中获取节点的 ID 字段。
ID 列名称为:cabinetID
这是我用来填充 TreeView 的代码:
public void loadContainerTree()
{
// fMain fm = new fMain();
// txtRepositoryID.Text = fm.repositoryID.Text;
repositoryid = Convert.ToInt32(txtRepositoryID.Text);
conn.Open();
SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM tblCabinets WHERE ParentID IS NULL AND repositoryID = @RepositoryID", conn);
adapter.SelectCommand.Parameters.AddWithValue("@RepositoryID", repositoryid);
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);
adapterchild.SelectCommand.Parameters.AddWithValue("@ParentID", parentid);
adapterchild.SelectCommand.Parameters.AddWithValue("@RepositoryID", repositoryid);
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);
}
}
}
【问题讨论】:
-
您是否尝试过使用 Tag 属性?
-
我试过这段代码“CurrentNodeID.Text = ContainersTree.SelectedNode.Tag.ToString();”但我得到了这个错误“System.NullReferenceException:'对象引用未设置为对象的实例。 '"
-
我真的需要我的问题的答案..
-
在您的
Populate TreeView函数中,您没有将tag设置为它,但是您尝试将tag与CurrentNodeId.Text = tag一起使用
标签: c# sql-server winforms radtreeview