qq_28295689
2018-03-14 08:22
采纳率: 33.3%
浏览 1.6k

c#winfrom treeview递归问题

图片说明

我遇到了一个问题,需要将一张表里的数据,弄成treeview形式,
sql 文件是这个

https://www.wenwenlove.cn/my/script.sql ,我放到我服务器上了

这个表里目前有4级结构,分别是1,2,3,4,后面可能有5,或则。。。
能帮我解决的万分感谢

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

10条回答 默认 最新

  • openpignsdn 2018-03-15 14:06
    最佳回答

    TreeNode tn1 = treeView1.Nodes.Add("", "存货分类");
    DataTable dt =DBHelpr.Query("select clnvCCode,clnvCName,ilnvCGrade,blnvCend from InventoryClass");

           // cometree(tn1.Nodes, dt, "",1);
    
            DataTable dts = GetNewDataTable(dt, "ilnvCGrade=" + 1, "clnvCName asc");
            for (int i = 0; i < dts.Rows.Count; i++)
            {
                tn1.Nodes.Add(dts.Rows[i]["clnvCName"].ToString(), dts.Rows[i]["clnvCName"].ToString());
                if (dts.Rows[i]["blnvCend"].ToString()=="0")
                cometree(tn1.Nodes[i].Nodes, dt, dts.Rows[i]["clnvCCode"].ToString(), 2);
            }
    
                         public void cometree(TreeNodeCollection tn, DataTable dt, string zkey, int ilnvCGrade)
        {
            DataTable dts = GetNewDataTable(dt, "clnvCCode like'" + zkey + "%' and ilnvCGrade=" + ilnvCGrade, "clnvCName asc");
            for (int i = 0; i < dts.Rows.Count; i++)
            {
                tn.Add(dts.Rows[i]["clnvCName"].ToString(), dts.Rows[i]["clnvCName"].ToString());
                if (dts.Rows[i]["blnvCend"].ToString() == "0")
                cometree(tn[i].Nodes, dt, dts.Rows[i]["clnvCCode"].ToString(), ilnvCGrade+1);
            }
        }
    
        /// 执行DataTable中的查询返回新的DataTable
        /// </summary>
        /// <param name="dt">源数据DataTable</param>
        /// <param name="condition">查询条件</param>
        /// <returns></returns>
        private DataTable GetNewDataTable(DataTable dt, string condition, string sortstr)
        {
            DataTable newdt = new DataTable();
    
            newdt = dt.Clone();
            DataRow[] dr = dt.Select(condition, sortstr);
            for (int i = 0; i < dr.Length && i < 200; i++)
            {
                newdt.ImportRow((DataRow)dr[i]);
            }
    
            return newdt;//返回的查询结果
        }
    
    评论
    解决 无用
    打赏 举报
查看更多回答(9条)

相关推荐 更多相似问题