以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 Dot NET,C#,ASP,VB 』  (http://bbs.xml.org.cn/list.asp?boardid=43)
----  TreeView使用的一些心得  (http://bbs.xml.org.cn/dispbbs.asp?boardid=43&rootid=&id=11867)


--  作者:admin
--  发布时间:11/9/2004 2:26:00 AM

--  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编译器,程序可能有错,希望大家原谅,晚些时候再
补充一些.

时间匆忙,没写注释,晚些时候一起补上.
--

※ 修改:·minerva 于 Sep  7 10:35:16 修改本文·[FROM:   210.42.96.114]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 210.42.96.114]
上一篇
返回上一页
回到目录
回到页首
下一篇



W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
47.852ms