【发布时间】:2018-04-26 13:43:36
【问题描述】:
我目前有一个从单个 SQL 数据库表加载数据的树视图。我已经让它加载结果,但我发现它为每个子对象加载相同的父节点,并且只在下面列出一个子对象。如何将这些分组以使一个父母对多个孩子?我的代码如下。我尝试使用 DISTINCT,但我不确定我该怎么做,并且当我必须拉多个列时无法让它工作。我非常感谢任何人的帮助!
例如,我的表有:
WorkOrderName ItemNumber
45123 101
45123 102
45123 103
我的树视图目前看起来像:
+ 45123
- 101
+ 45123
- 102
+ 45123
- 103
当我需要它看起来像这样时:
+ 45123
- 101
- 102
- 103
这是我的代码:
private void Form1_Shown(object sender, EventArgs e)
{
treeView1.Nodes.Clear();
try
{
cn.Open();
}
catch(SqlException ex)
{
MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
Application.ExitThread();
}
SqlCommand cm = new SqlCommand("SELECT * FROM ProductTracking WHERE WorkOrderName IS NOT NULL ORDER BY WorkOrderName ASC", cn);
try
{
SqlDataReader dr = cm.ExecuteReader();
while (dr.Read())
{
TreeNode node = new TreeNode(dr["WorkOrderName"].ToString());
node.Nodes.Add(dr["ItemNumber"].ToString());
treeView1.Nodes.Add(node);
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
【问题讨论】:
-
嗯,您正在为每个数据库结果创建一个父节点。所以...您应该检查父节点是否已经存在,如果存在则检查父节点,如果不存在则不存在。
-
不幸的是,我不确定如何在我的代码中实现这一点。在此之前我没有使用过树视图。