c# 多层BOM 树形结构_某年某月_新浪博客

效果图:
c# <wbr>多层BOM <wbr>树形结构
******************************
        //是否含有半成品
        static bool ck_type(DataTable tb1)
        {
            foreach (DataRow r in tb1.Rows)
            {
                if (r["ftype"].ToString()=="自制")
                {
                    return false;
                }
            }
            return true;
        }

        //拆解BOM
        static DataTable cj_bom(string bomid)
        {
            DataTable tb1 = new DataTable();
            tb1.Columns.Add("bomid");
            tb1.Columns.Add("cwl");
            tb1.Columns.Add("pwl");
            tb1.Columns.Add("ftype");
            tb1.Columns.Add("pid");
            tb1.Columns.Add("lv");
            DataTable tb2 = new DataTable();
            tb2 = cj_wl_id(bomid);
            int i = 0;
            foreach (DataRow r in tb2.Rows)
            {
                DataRow newRow; 
                newRow = tb1.NewRow(); 
                newRow["bomid"] = r["bomid"].ToString(); 
                newRow["cwl"] = r["cwl"].ToString(); 
                newRow["pwl"] = r["pwl"].ToString();
                newRow["ftype"] = r["ftype"].ToString();
                newRow["pid"] = r["pid"].ToString();
                newRow["lv"] = i;
                tb1.Rows.Add(newRow);
            }
            do
            {
                i++;
                DataTable tb3 = new DataTable();
                tb3.Columns.Add("bomid");
                tb3.Columns.Add("cwl");
                tb3.Columns.Add("pwl");
                tb3.Columns.Add("ftype");
                tb3.Columns.Add("pid");
                foreach (DataRow r in tb1.Rows)
                {
                    if (r["ftype"].ToString()=="自制")
                    {
                       r["ftype"] = "自制*";
                       DataTable tb4= cj_wl(r["pwl"].ToString(),r["bomid"].ToString());
                       foreach (DataRow r0 in tb4.Rows)
                       {
                           DataRow newRow;
                           newRow = tb3.NewRow();
                           newRow["bomid"] = r0["bomid"].ToString();
                           newRow["cwl"] = r0["cwl"].ToString();
                           newRow["pwl"] = r0["pwl"].ToString();
                           newRow["ftype"] = r0["ftype"].ToString();
                           newRow["pid"] = r0["pid"].ToString();
                           tb3.Rows.Add(newRow);
                       }
                    }
                }
                foreach (DataRow r1 in tb3.Rows)
                {
                    DataRow newRow;
                    newRow = tb1.NewRow();
                    newRow["bomid"] = r1["bomid"].ToString();
                    newRow["cwl"] = r1["cwl"].ToString();
                    newRow["pwl"] = r1["pwl"].ToString();
                    newRow["ftype"] = r1["ftype"].ToString();
                    newRow["pid"] = r1["pid"].ToString();
                    newRow["lv"] = i;
                    tb1.Rows.Add(newRow);
                }
            } while (ck_type(tb1)==false);

            return tb1;
        }
        //按料号拆解
        public static DataTable cj_wl(string wl,string pid)
        {
            DataTable tb1 = new DataTable();
            SqlConnection sql_conn = new SqlConnection(bomhd.sqlstr);
            SqlDataAdapter f_ap = new SqlDataAdapter("SELECT b1.bomid,b1.pid,b1.cwl,b2.line,b2.pwl,b2.ftype FROM bom_hd AS b1 LEFT JOIN bom_dtl AS b2 ON b1.bomid=b2.bomid WHERE b1.cwl='" + wl +"' and b1.pid='" + pid + "'", sql_conn);
            DataSet f_d = new DataSet();
            f_ap.Fill(f_d);
            tb1 = f_d.Tables[0];
            return tb1;
        }
        //按BOMID拆解
        static DataTable cj_wl_id(string bomid)
        {
            DataTable tb1 = new DataTable();
            SqlConnection sql_conn = new SqlConnection(bomhd.sqlstr);
            SqlDataAdapter f_ap = new SqlDataAdapter("SELECT b1.bomid,b1.pid,b1.cwl,b2.line,b2.pwl,b2.ftype FROM bom_hd AS b1 LEFT JOIN bom_dtl AS b2 ON b1.bomid=b2.bomid WHERE b1.bomid='" + bomid + "'", sql_conn);
            DataSet f_d = new DataSet();
            f_ap.Fill(f_d);
            tb1 = f_d.Tables[0];
            return tb1;
        }
        //递归显示treeview
        private void loadPower(TreeNode node, string cwl,string pid, DataTable tb)
        {
            DataRow[] dr = tb.Select("cwl='" + cwl + "' and pid='" + pid + "'","ftype desc");
            foreach (DataRow idr in dr)
            {
                TreeNode tmp = node.Nodes.Add(idr["pwl"].ToString(), idr["pwl"].ToString());
                tmp.Tag = idr["bomid"].ToString();
                DataRow[] drc = tb.Select("cwl='" + idr["pwl"].ToString() + "'", "ftype desc");
                if (drc.Length > 0)
                    loadPower(tmp, idr["pwl"].ToString(),idr["bomid"].ToString(),tb);
            }
        }
        //显示treeview
        public void re_tree2(string bomid)
        {
            xx_bomid = bomid;
            tv1.Nodes.Clear();
            DataTable tb = cj_bom(bomid);
            //view2.AutoGenerateColumns = true;
           //view2.DataSource = tb;
            if (tb.Rows.Count == 0)
            {
                return;
            }
            int n_row = tb.Rows.Count;
            int mx_lv = Convert.ToInt32(tb.Rows[n_row - 1]["lv"].ToString());
            string cwl = tb.Rows[0]["cwl"].ToString();
            string pid = tb.Rows[0]["pid"].ToString();
            TreeNode tn0 = new TreeNode();
            tn0.Text = cwl;
            tn0.Tag = tb.Rows[0]["pid"].ToString();
            tv1.Nodes.Add(tn0);
            loadPower(tv1.TopNode, cwl,pid, tb);
            tv1.ExpandAll();
        }


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值