读书人

DataTable 遍历行 无限级分类解决方案

发布时间: 2012-02-22 19:36:56 作者: rapoo

DataTable 遍历行 无限级分类
这涉及到无限级分类

数据库 aaa


id name c d (c 代表是否父节点 d代表是否末级 1是 0不是)
1 电脑 0 1
2 手机 0 1
3 nokia 2 0
4 samsun 2 0
5 饮料 0 1
6 橙汁 5 0
7 雪碧 5 0
8 可乐 5 0

select * form aaa 把这个结果集用DATATABLE返回

我在WINFROM里TreeView以树的形式表现

TreeMenu.Nodes.Clear();
DataTable dtTree = GetAllTreeInfo();//数据库aaa传来的结果集
foreach (DataRow dr in dtTree.Rows)
{
TreeNode tmpNode = new TreeNode();
tmpNode.Tag = dr[ "id "].ToString();
tmpNode.Text = dr[ "name "].ToString();

if (dr[ "c "].ToString() == "0 ")
{
TreeMenu.Nodes.Add(tmpNode);
if (dr[ "d "].ToString() == "0 ")
{
//子节点这里代码不知道怎么写了 高手指点
tmpNode.Nodes.Add(dr[ "name "].ToString());

}

}






[解决办法]
LoadTrea(dtTree ,TreeMenu)

private void LoadTrea(DataTable dt, TreeNode ParentNode)
{
TreeNode tempNode;

for (int i = 0; i < dt.Rows.Count; i++)
{

if (ParentNode == null)
{
tempnode = tvwProduct.Nodes.Add(dt.Rows[i][ "Name "].ToString());
tempNode.Tag = dt.Rows[i][ "id "].ToString();
}
else
{
if (dt.Rows[i][ "c "].ToString() == ParentNode.Tag)
{
tempnode = ParentNode.Nodes.Add(dt.Rows[i][ "Name "].ToString());

}
}
LoadTrea(dt, tempNode);

}
}
[解决办法]
if (0 == (int)dr[2])
{
TreeNode tmpNode = new TreeNode();
tmpNode.Text = dr[1].ToString();
tmpNode.Tag = dr[0];
treeView1.Nodes.Add(tmpNode);
}
else
{
TreeNode tmpNode = new TreeNode();
tmpNode.Text = dr[1].ToString();
tmpNode.Tag = dr[0];
for (int i = 0; i < treeView1.Nodes.Count; i++)
{
if ((int)dr[2] == (int)treeView1.Nodes[i].Tag)
{
treeView1.Nodes[i].Nodes.Add(tmpNode);
break;
}
}
}

读书人网 >C#

热点推荐