美文网首页
Winform TreeView 节点加载例子

Winform TreeView 节点加载例子

作者: a9b854aded01 | 来源:发表于2019-08-12 09:38 被阅读0次

场景:以一个仓库为栗子,仓库里面会有货位,货位可以有一级货位、二级货位......无数货位,货位是不会出现跳级的情况(必须有连续的上级货位)。
首先加载一级货位

   //货位
            DataTable dt_depositplace = MyBaseManageProxy.GetDepositPlaceData(rar_name).Tables[0];
            dt_place.TableName = "depositplace";
            depositplace = dt_depositplace;

            DataView dvstore = dt_storeof.DefaultView;
            dvstore.Sort = "Dep_Name";
            DataTable dtstore = dvstore.ToTable();


            DataView dvallplace = dt_depositplace.DefaultView;
            dvallplace.Sort = "Gal_ID";
            DataTable dtallplace = dvallplace.ToTable();

            #region 一级
         
                DataView dv1 = dtallplace.DefaultView;
                dv1.RowFilter = "Gal_Superior = 0  ";
                if (dv1.Count > 0)
                {
                    DataTable dt = dv1.ToTable();
                    
                    
                    foreach (DataRow dr in dt.Rows)
                    {
                    TreeNode tn = new TreeNode();
                    tn.Name = dr["Gal_ID"].ToString().Trim();
                    tn.Text = dr["Gal_NAME"].ToString().Trim();
                    tn.Tag = 0;
                    treeView1.Nodes.Add(tn);
                }
                    //treeView1.Nodes.Add(tn);
                }
            
            #endregion

         this.treeView1.ExpandAll();
         BindData(dt_depositplace);

BindData(dt_depositplace) 没有点击的二级货位都显示loading

  public void BindData(DataTable dt)
        {
            for (int y = 0; y < this.treeView1.Nodes.Count; y++)
            {
                 
                        //判断是否有子节点;
                        DataView dv1 = dt.Copy().DefaultView;
                        dv1.RowFilter = string.Format(" Gal_Superior = '{0}'", Convert.ToInt32(this.treeView1.Nodes[y].Name.ToString().Trim()));
                        int count = dv1.ToTable().Rows.Count;
                        if (count > 0)
                        {
                            TreeNode tree_load = new TreeNode();
                            tree_load.Text = "loading...";
                            this.treeView1.Nodes[y].Nodes.Add(tree_load);

                            this.treeView1.Nodes[y].Collapse();
                        }
                    }

                
            }

事件绑定 this.View.TreeView.BeforeExpand += new TreeViewCancelEventHandler(treeView1_BeforeExpand); 当点击某一节点时加载下级货位

  private void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e)
        {
            if (e.Node.Nodes.Count > 1)
            {
                if (e.Node.Nodes[0].Text == "loading...")
                {
                    e.Node.Nodes.RemoveAt(0);
                }
                return;
            }
            if (e.Node.Nodes[0].Text != "loading...")
            {
                return;
            }
            if (!string.IsNullOrEmpty(e.Node.Tag.ToString()))
            {
                if (Convert.ToInt32(e.Node.Tag) >= 0)
                {
                    namelist.Clear();
                    if (e.Node.Nodes[0].Text == "loading...")
                    {
                        e.Node.Nodes.RemoveAt(0);
                    }
                    //e.Node.Nodes.Clear();
                    DataTable dt = GetDateByID(Convert.ToInt32(e.Node.Name));
                    if (dt.Rows.Count > 0)
                    {
                        for (int i = 0; i < dt.Rows.Count; i++)
                        {
                            TreeNode t = new TreeNode();
                            t.SelectedImageIndex = 1;
                            t.Name = dt.Rows[i][0].ToString().Trim();
                            t.Text = dt.Rows[i][1].ToString().Trim();
                            t.Tag = Convert.ToInt32(e.Node.Tag) + 1;

                            namelist.Add(dt.Rows[i][1].ToString().Trim());
                            e.Node.Nodes.Add(t);

                            int count = GetCountByID(Convert.ToInt32(t.Name));
                            if (count > 0)
                            {
                                TreeNode tree_load = new TreeNode();
                                tree_load.Text = "loading...";
                                t.Nodes.Add(tree_load);

                                t.Collapse();
                            }
                        }
                    }
                }
            }
        }

相关文章

网友评论

      本文标题:Winform TreeView 节点加载例子

      本文链接:https://www.haomeiwen.com/subject/kakyjctx.html