【转载】关于TreeView和数据库如何进行绑定显示

来源:互联网 发布:斗鱼刷火箭软件 编辑:程序博客网 时间:2024/06/05 05:56

【转载于】tech.it168.com/KnowledgeBase/Articles/0/5/8/058be1cc2a1e95f0dd1e7f9ac71f9d70.htm

需要根据一个表中的数据来显示树形目录,数据库结构如下:》》》》》》》》》》》


构件树形目录的方法如下:
 
       #region 构建TreeView
        
public bool BuildTree(TreeView tv, DataSet ds)
        {
            tv.Nodes.Clear();
            
foreach (DataRow dbRow in ds.Tables[0].Rows)
            {
                
if (dbRow["FatherNumber"].ToString() == string.Empty)
                {
                    dbRow[
"FatherNumber"= DBNull.Value;
                }
            }
            ds.Relations.Add(
"NodeRelation", ds.Tables[0].Columns["TypeNumber"], ds.Tables[0].Columns["FatherNumber"], false);
            
foreach (DataRow dbRow in ds.Tables[0].Rows)
            {
                
if (dbRow.IsNull("FatherNumber"))
                {
                    TreeNode newNode 
= CreateNode(dbRow["TypeName"].ToString(), dbRow["TypeNumber"].ToString());
                    tv.Nodes.Add(newNode);//父节点树
                    PopulateSubTree(dbRow, newNode);//子节点树
                }
            }
            
//展开所有节点
            tv.ExpandAll();
            
return true;
        }
        
private void PopulateSubTree(DataRow dbRow, TreeNode node)
        {
            
foreach (DataRow childRow in dbRow.GetChildRows("NodeRelation"))
            {
                      TreeNode childNode 
= CreateNode(childRow["TypeName"].ToString(), childRow["TypeNumber"].ToString());
                
node.Nodes.Add(childNode);
                PopulateSubTree(childRow, childNode);
            }
        }
        
private TreeNode CreateNode(string text, string tag)//创建节点Node
        {
            TreeNode node 
= new TreeNode();
            node.Text 
= text;
            node.Tag 
= tag;
            
return node;
        }
                   这样调用:
SqlConnection con = new SqlConnection("server=192.168.1.192;database=AUDE_KCGL;uid=sa;pwd=;");
            SqlDataAdapter sda 
= new SqlDataAdapter("select TypeNumber,FatherNumber,TypeName from KC_ObjectType", con);
            DataSet dsTree 
= new DataSet();
            sda.Fill(dsTree);
            
//调用方法构件树形目录
            BuildTree(this.treeView1, dsTree);
                    程序运行效果:
                                           
原创粉丝点击