Jasonchne
Jasonchne
采纳率73.7%
2019-07-05 15:04 阅读 553

TreeView添加节点不显示

TreeView添加节点不显示

代码一、
private void btn_mb_lj_Click_1(object sender, EventArgs e)
        {
            btn_mb_cslj.Enabled = false;
            btn_mb_lj.Enabled = false;
            String mbdz = txt_mb_dz.Text;
            String mbdk = txt_mb_dk.Text;
            String mbzh = txt_mb_zh.Text;
            String mbpwd = txt_mb_pwd.Text;
            String mbmc = txt_mb_mc.Text;
            this.MBTableName = mbmc;
            //Console.WriteLine(mbdz + mbdk + mbzh + mbpwd + mbmc);
            //Console.Read();
            MBSqlu = new SqlConnectionUtils();
            MBConn = MBSqlu.connsql(mbdz, mbdk, mbzh, mbpwd, mbmc);
            if (MBConn != null)
            {
                cMessage2.Text = "连接成功";

                List<String> tableList = MBSqlu.queryDB();//查询数据库中的表
                AddTree(tableList, mbmc, MBTreeView);

            }
            else
            {
                cMessage2.Text = "连接失败";
            }
            btn_mb_cslj.Enabled = true;
            btn_mb_lj.Enabled = true;
        }
代码二、
public List<String> queryDB()
        {
            List<String> DB = new List<string>();
            String sql = "select name from sysobjects where xtype='u'";
            SqlDataReader reader = null;

            try
            {
                SqlCommand cmd = new SqlCommand(sql, this.conn);
                reader = cmd.ExecuteReader();

                while (reader.Read())
                {
                    DB.Add(reader["name"].ToString());
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.ToString() + "读取数据失败");
            }
            finally
            {
                reader.Close();
            }
            return DB;

        }
代码三、
public void AddTree(List<String> list, string mc, TreeView tree)
        {
            tree.Nodes.Clear();
            tree.StateImageList = dbImg;
            TreeNode parent = new TreeNode();
            parent.Text = mc.Trim();
            parent.StateImageIndex = 0;
            tree.Nodes.Add(parent);

            foreach (string s in list)
            {
                TreeNode son = new TreeNode();
                son.StateImageIndex = 1;
                parent.Nodes.Add(son);
            }
        }
代码四、
public SqlConnection connsql(string ip, string dk, string zh, string pwd, string dbname)
        {
            try
            {
                if (conn != null)
                {
                    conn.Close();
                    conn.Dispose();
                }
                string conncetion = "data source=" + ip + "," + dk + ";initial catalog=" + dbname + ";user id=" + zh + ";pwd=" + pwd + "";
                conn = new SqlConnection(conncetion);
                conn.Open();
            }
            catch (Exception e)
            {
                throw new Exception(e.ToString() + "打开数据库失败");
            }
            return conn;
        }

代码一为前台的按钮事件方法,代码二读取数据内容,代码三添加TreeView的方法,代码四为链接数据的方法。
前台winform有个TreeView和一个Button点击按钮后,把获取的内容添加到TreeView中进行显示,但是只显示了一个父节点所有的子节点全部都不能显示。
求大神指点!!

补充一下,前台运行截图:
图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

1条回答 默认 最新

  • 已采纳
    caozhy 从今以后生命中的每一秒都属于我爱的人 2019-07-05 15:34

    涉及到数据库的访问,建议你还是自己调试一下。跟踪进去,一个看有没有进入catch,一个看sql是否拼接正确,一个看数据库返回了什么数据,然后看你添加节点的代码有没有执行到

    while (reader.Read())
    这个地方看有没有数据

    foreach (string s in list)
    这里list是否为空

    点赞 评论 复制链接分享

相关推荐