C# .NET treeView(樹形控制元件)繫結資料的通用方法 (精)
阿新 • • 發佈:2019-01-10
DataTable dtCangKu = new DataTable(); //定義一張新表 BLL基礎資料.frm_CangKuZiLiao.frm_CangKuZiLiaoClient myfrm_CangKuZiLiaoClient = new BLL基礎資料.frm_CangKuZiLiao.frm_CangKuZiLiaoClient(); private void frm_CangKuZiLiao_Load(object sender, EventArgs e) { dtCangKu = myfrm_CangKuZiLiaoClient.frm_CangKuZiLiao_Load_SlectCangKu().Tables[0]; //呼叫方法,從資料庫提取資料 tv_CangKu.Nodes.Clear(); //清空樹形控制元件的所有節點 AddTree(0, (TreeNode)null); //迴圈遞迴提取資料 tv_CangKu.ExpandAll(); //展開樹形控制元件的所有節點 } #region 迴圈遞迴提取資料(部門) public void AddTree(int ParentID, TreeNode pNode) { DataTable dtTree = myfrm_CangKuZiLiaoClient.frm_CangKuZiLiao_Load_getCangKu(ParentID).Tables[0]; DataView dvTree = new DataView(dtTree); string Fstr = "[倉庫ID_Far] =" + ParentID; dvTree.RowFilter = Fstr; foreach (DataRowView Row in dvTree) { TreeNode Node = new TreeNode(); if (pNode == null) //處理主節點 { Node.Name = Row["倉庫ID"].ToString(); //這裡+了2個值分別到Name和Text Node.Text = Row["倉庫名稱"].ToString(); tv_CangKu.Nodes.Add(Node); AddTree(Int32.Parse(Row["倉庫ID"].ToString()), Node); //遞迴 } else //處理子節點 { Node.Name = Row["倉庫ID"].ToString(); Node.Text = Row["倉庫名稱"].ToString(); pNode.Nodes.Add(Node); AddTree(Int32.Parse(Row["倉庫ID"].ToString()), Node); } Node.Tag = Row["倉庫ID"]; //獲取當前節點資料(ID) } } #endregion