qq_28295689 2018-03-14 08:22 采纳率: 33.3%
浏览 1597
已采纳

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条)

报告相同问题?

悬赏问题

  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥15 MCNP里如何定义多个源?
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services