TreeView使用的一些心得

发信人: minerva (cheng), 信区: DotNET 
标  题: TreeView使用的一些心得 
发信站: BBS 水木清华站 (Sun Sep  7 10:33:31 2003), 转信 
 
(1)动态生成TreeView 
假设数据库中有两个表,一个为班级表,有班号和班名两个属性,班号ccode为主键,一 
个为学生表,有学号和姓名两个属性,学号scode为主键,根节点为学院。又假设在db类 
中已经写好了从数据源中选择数据的Select方法。树控件ID为TREE。 
    Void InTree() 

   Tree.Nodes.Clear(); 
   TreeNode Root = New TreeNode(); 
   Root.Text = "学院"; 
   Root.Type = "0"; 
   Tree.Node.Add(Root); 
    
   string strSql="SELECT * FROM CLASS"; 
   DataTable dt = New DataTable(); 
   dt = this.db.Select(strSql); 
   for(int i=0;i<dt.Rows.Count;i++) 

  TreeNode tmpnode = new TreeNode(); 
  Root.Nodes.Add(tmpnode); 
  tmpnode.ID = dt.Rows[i][0].Tostring(); 
  tmpnode.Text = dt.Rows[i][1].Tostring(); 
  tmpnode.type = "1"; 
 
  string strSql1 = "SELECT * FROM STUDENT"; 
  DataTable dt1 = new DataTable(); 
  dt1 = this.db.Select(strSql1); 
  for(int j = 0; j<dt1.Rows.Count;j++) 

   TreeNode tmpNd = New TreeNode(); 
   tmpnode.Nodes.Add(tmpNd); 
   tmpNd.ID = dt1.Rows[i][0].Tostring(); 
   tmpNd.Text = dt1.Rows[i][1].Tostring(); 
   tmpNd.Type ="2"; 
}  
}       

 
(2)遍历树 
一般是递归算法,网上的算法一般是酱紫的 
 
public void GetAllNodeText(TreeNodeCollection tnc) 

 foreach (TreeNode node in tnc) 
 { 
  if( node.Nodes.Count != 0 ) 
   GetAllNodeText(node.Nodes); 
  } 
 } 
 
 
但是在做项目时我发现一个问题,用foreach循环,在对treeview节点的checkbox属性为 
true多个节点进行遍历删除时,会出现枚举错误,所以我采用了for循环写法. 
代码如下: 
 
Void GetRoot() 

  TreeNode Root = TREE.GetNodeFromIndex("0"); 
  DELET(Root); 
 

Void DELEt(TeeNode node) 

  
  
 for(int i =0;i<node.Nodes.Count;i++) 
{    
   TreeNode Tnode = new TreeNode(); 
   Tnode = node.Nodes[i]; 
   if(node.Checked == true) 
 {  Tnode.ReMove(); 
   i--; 

else 

 DELET(Tnode); 

   


另外,网上在做删除操作时,总是先用TreeNode NdSel = (TreeNode)Tnode.Parent.得到父 
节点,然后用NdSel.Remove(Tnode);实践证明,不需要如此. 
 
 
今天线写道这里,因为写的时候没有.net编译器,程序可能有错,希望大家原谅,晚些时候再 
补充一些. 
 
时间匆忙,没写注释,晚些时候一起补上.  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值