首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2012-02-22 
DataTable 遍历行 无限级分类这涉及到无限级分类数据库aaaidnamecd(c代表是否父节点d代表是否末级1是0不是

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;
}
}
}

热点排行