TreeView 后台加载

TreeView控件是.NET自带的一个树形菜单控件,使用非常简单。
论坛里有朋友问到了如何通过后台动态加载TreeView,手头正好刚写完一个,顺便贴出来。
不好的地方大家见谅!

应用表结构:

比如一个TreeView的样子是下边的:
仓库
   ¦--添加仓库
   ¦--编辑仓库
财务
   ¦--入账
   ¦--出帐
查询

那么MenuTitle表保存的就是"仓库,财务,查询"这些根节点
MenuDetail保存的就是"添加仓库,编辑仓库,入账,出帐"这些子节点
它们之间用ID关联
MenuTitle表的结构:
ID{主键}
Title{主节点名称}
MenuDetail表的结构:
Did{主键}
ID{外键}
DTitle{子节点名称}

读取想要加载到TreeView的菜单项目 
private   void  GetDataSet() 
    

        
try 
        

            
string constr = System.Configuration.ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString; 
            SqlConnection conn 
= new SqlConnection(constr); 
            conn.Open(); 
            
string comstr = "Select * from MenuTitle"
            SqlDataAdapter sda 
= new SqlDataAdapter(comstr, conn); 
            sda.Fill(ds, 
"table1"); 
            comstr 
= "Select * from MenuDetail"
            sda 
= new SqlDataAdapter(comstr, conn); 
            sda.Fill(ds, 
"table2"); 
            conn.Close(); 
        }
 
        
catch (Exception ex) 
        

            Console.Write(
"读取菜单错误"); 
        }
 
    }
 

加载根节点 
    
private   void  initRoot(TreeView tnd) 
    

        
try 
        

            DataView dv 
= new DataView(); 
            TreeNode tmpnd; 
            dv.Table 
= ds.Tables["table1"]; 
            
foreach (DataRowView drv in dv) 
            

                tmpnd 
= new TreeNode(); 
                tmpnd.Value 
= drv["ID"].ToString(); 
                tmpnd.Text 
= drv["Title"].ToString(); 
                tnd.Nodes.Add(tmpnd); 
                tmpnd.PopulateOnDemand 
= true
                tmpnd.SelectAction 
= TreeNodeSelectAction.Expand; 
            }
 
        }
 
        
catch (Exception ex) 
        

            Console.Write(
"读取根节点错误"); 
        }
 
    }
 

加载子节点 
    
private   void  AddChildNodes(TreeNode nds) 
    

        
try 
        

            DataView dv 
= new DataView(); 
            TreeNode tmpnd; 
            dv.Table 
= ds.Tables["table2"]; 
            dv.RowFilter 
= "ID=" + nds.Value.ToString() + ""
            
foreach (DataRowView drv in dv) 
            

                tmpnd 
= new TreeNode(); 
                tmpnd.Value 
= drv["Did"].ToString(); 
                tmpnd.Text 
= drv["DTitle"].ToString(); 
                nds.ChildNodes.Add(tmpnd); 
                tmpnd.PopulateOnDemand 
= true
                
if (nds.ChildNodes.Count != 0
                

                    tmpnd.SelectAction 
= TreeNodeSelectAction.Expand; 
                }
 
            }
 
        }
 
        
catch (Exception ex) 
        

            Console.Write(
"读取子节点错误"); 
        }
 
    }
 


在Page_Load里遍历一下 

GetDataSet(); 
initRoot(TreeView1) 
foreach(TreeNode tn in TreeView1.Nodes) 

AddChildNodes(tn); 
}
 
}
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值