马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

【winform】我这个treeview为什么只能从数据库调用根节点?

[复制链接]
查看3872 | 回复1 | 2015-6-12 08:40:14 | 显示全部楼层 |阅读模式
数据库表如下

数据库表

数据库表

这是代码:
Namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {

            private DataTable dt = null;

            public Form1()
            {
                InitializeComponent();
                InitDataTable();

            }

            //获取Area所用数据
            private void InitDataTable()
            {
                SqlConnection conn = new SqlConnection("Data source=(local);Initial Catalog=TreeViewTest;User ID=sawd=ABCabc01");
                SqlCommand cmd = new SqlCommand("SELECT * FROM Area", conn);
                SqlDataAdapter ada = new SqlDataAdapter(cmd);
                dt = new DataTable();
                ada.Fill(dt);
            }

            private void Form1_Load(object sender, EventArgs e)
            {
                BindRoot();
            }

            //绑定根节点
            private void BindRoot()
            {
                DataRow[] rows = dt.Select("fAreaId=-1");//取根
                foreach (DataRow dRow in rows)
                {
                    TreeNode rootNode = new TreeNode();
                    rootNode.Tag = dRow;
                    rootNode.Text = dRow["AreaName"].ToString();
                    treeView1.Nodes.Add(rootNode);

                    BindChildAreas(rootNode);
                }

            }

            //递归绑定子区域
            private void BindChildAreas(TreeNode fNode)
            {
                DataRow dr = (DataRow)fNode.Tag;//父节点数据关联的数据行
                int fAreaId = (int)dr["id"]; //父节点ID
                DataRow[] rows = dt.Select("fAreaId=" + fAreaId);//子区域
                if (rows.Length == 0)  //递归终止,区域不包含子区域时
                {
                    return;
                }

                foreach (DataRow dRow in rows)
                {
                    TreeNode node = new TreeNode();
                    node.Tag = dRow;
                    node.Text = dRow["AreaName"].ToString();

                    //添加子节点
                    fNode.Nodes.Add(node);
                    //递归
                    BindChildAreas(node);
                }
            }
        }
    }

运行后只能生成根节点,下面的子节点为什么都不见了?改怎么改才好?
谢谢!
QQ截图20150612083854.png

猫猫咬了我的蛋 | 2015-6-12 18:06:03 | 显示全部楼层
DataRow dr = (DataRow)fNode.Tag;//父节点数据关联的数据行
这里有问题
会出现转化无效的错误
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则