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

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

报告相同问题?

悬赏问题

  • ¥15 【急】在线问答CNC雕刻机的电子电路与编程
  • ¥60 在mc68335芯片上移植ucos ii 的成功工程文件
  • ¥15 笔记本外接显示器正常,但是笔记本屏幕黑屏
  • ¥15 Python pandas
  • ¥15 蓝牙硬件,可以用哪几种方法控制手机点击和滑动
  • ¥15 生物医学数据分析。基础课程就v经常唱课程舅成牛逼
  • ¥15 云环境云开发云函数对接微信商户中的分账功能
  • ¥15 空间转录组CRAD遇到问题
  • ¥20 materialstudio计算氢键脚本问题
  • ¥15 有没有代做有偿主要做数据可视化部分即可(2023全国高考更省一本线理科类)