TreeView

ASP.NET最简单的例子,不过是VB的  
          Private   Sub   LoadTree1()  
                  Dim   myClassDepartment   As   New   ClassDepartment(Application("ConnectString"))  
                  Dim   myClassDepartmentData   As   ClassDepartmentData  
                  Dim   myNode   As   Microsoft.Web.UI.WebControls.TreeNode  
                  Dim   i   As   int64  
                  Dim   myData   As   ArrayList   =   myClassDepartment.List(Session("LoginUserID"),   "   len(a.F12)=4   ")  
                  '加入行数据  
                  For   i   =   0   To   myData.Count   -   1  
                          '从数组中读取数据  
                          myClassDepartmentData   =   myData.Item(i)  
                          '新加入节点  
                          myNode   =   New   Microsoft.Web.UI.WebControls.TreeNode  
                          myNode.CheckBox   =   True  
                          myNode.ID   =   myClassDepartmentData.F12  
                          myNode.Text   =   "<b>"   &   myClassDepartmentData.F3   &   "</b>"  
                          If   strsub(myClassDepartmentData.F12,   Session("LoginUserDepartmentCode"))   Then   myNode.Expanded   =   True  
                          Call   LoadTree2(myNode,   myClassDepartment)  
                          treeDwxx.Nodes.Add(myNode)  
                  Next  
                  myClassDepartment.CloseDatabase()  
                  myClassDepartment   =   Nothing  
          End   Sub  
          Private   Sub   LoadTree2(ByVal   ParentNode   As   Microsoft.Web.UI.WebControls.TreeNode,   ByVal   myClassDepartment   As   ClassDepartment)  
                  Dim   myClassDepartmentData   As   ClassDepartmentData  
                  Dim   myNode   As   Microsoft.Web.UI.WebControls.TreeNode  
                  Dim   i   As   int64  
                  Dim   myData   As   ArrayList   =   myClassDepartment.List2(Session("LoginUserID"),   "   len(a.F12)=8   AND   Left(a.F12,4)='"   &   ParentNode.ID   &   "'")  
                  '加入行数据  
                  For   i   =   0   To   myData.Count   -   1  
                          '从数组中读取数据  
                          myClassDepartmentData   =   myData.Item(i)  
                          '新加入节点  
                          myNode   =   New   Microsoft.Web.UI.WebControls.TreeNode  
                          myNode.CheckBox   =   True  
                          myNode.ID   =   myClassDepartmentData.F12  
                          myNode.Text   =   "<b>"   &   myClassDepartmentData.F3   &   "</b>"  
                          If   strsub(myClassDepartmentData.F12,   Session("LoginUserDepartmentCode"))   Then   myNode.Expanded   =   True  
                          Call   LoadTree3(myNode,   myClassDepartment)  
                          ParentNode.Nodes.Add(myNode)  
                  Next  
          End   SubTop

2 楼zjz26(♂匆匆过客♂)回复于 2005-08-24 16:27:14 得分 0

有C#的吗?  
  Top

3 楼lc666(别以为头上戴条内裤就觉得自己很酷,你丫纯粹是装B!)回复于 2005-08-24 16:33:44 得分 0

strSQL="select   distinct   year(ConsignDate)   as   年份   from   PostInputInfo   order   by   年份   desc";  
   
  DataTable   dtTemp=ds.GetTable(strSQL,false);  
  foreach(DataRow   drTemp   in   dtTemp.Rows)  
  {  
  if(drTemp[0]   !=DBNull.Value)  
  {  
  strYear=drTemp[0].ToString();  
  TreeNode   node1=new   TreeNode();  
  node1.Text   =strYear   +   "   年";  
  this.tvwSheet.Nodes.Add(node1);  
  strSQL="select   distinct   month(ConsignDate)   as   月份   from   PostInputInfo   where   year(ConsignDate)="   +   strYear   +   "   order   by   月份";  
  DataTable   dt=ds.GetTable(strSQL,false);  
  foreach(DataRow   dr   in   dt.Rows)  
  {  
  strMonth=dr[0].ToString();  
  TreeNode   node2=new   TreeNode();  
  node2.Text   =strMonth   +   "   月";  
  node1.Nodes.Add(node2);  
   
  }  
  }  
  }Top

4 楼cuilj(一云忆水)回复于 2005-08-24 16:56:10 得分 0

tv.BackColor   =   Color.White;  
  tv.ExpandLevel   =   3;  
  tv.Nodes.Clear();  
  TreeNode   ParentTn   =   new   TreeNode();  
  tv.Nodes.Add(ParentTn   );  
  TreeNode   tn   =   new   TreeNode();  
  ParentTn.Nodes.Add(tn);Top

5 楼GDNPC(烟锁池塘柳,炮镇海城楼)回复于 2005-08-24 17:01:05 得分 50

private   void   LoadTree()  
  {  
  //Initial   root   node  
  TreeNode   aTreeNode   =   new   TreeNode();  
  //aTreeNode.Text   =   Session["LessionName"].ToString();  
  aTreeNode.Text   =   Session["LessonName"].ToString();  
  aTreeNode.ImageUrl="images/root.gif";  
  aTreeNode.SelectedImageUrl="images/root.gif";  
  aTreeNode.Target   =   "FraMain";  
  //  
  //aTreeNode.NavigateUrl   =   "admin/ContentAddSub.aspx?LessonID="+Server.UrlEncode(Session["LessonID"].ToString());  
  aTreeNode.NavigateUrl   =   "Content.aspx?LessonID="+Server.UrlEncode("101");  
   
  aTreeView.Nodes.Add(aTreeNode);  
  aTreeView.Nodes[0].Expanded=true;  
  //this.LoadChildNodes(aTreeNode,Session["LessonID"].ToString());  
  this.LoadChildNodes(aTreeNode,"101");  
  }  
   
  private   void   LoadChildNodes(TreeNode   parent,string   LessonID)  
  {  
  TreeNode   aTreeNode;  
  string   aLessionID;  
  MenuClass   aMenuClass   =   new   MenuClass();  
  DataTable   dt   =   aMenuClass.GetMenuItem(LessonID).Tables[0];  
   
  foreach(DataRow   row   in   dt.Rows)  
  {  
  aLessionID   =   row.ItemArray[0].ToString();  
   
  aTreeNode   =   new   TreeNode();  
  aTreeNode.Text   =   row.ItemArray[1].ToString();  
  aTreeNode.Target   =   "FraMain";  
  //  
  aTreeNode.NavigateUrl   =   "Content.aspx?LessonID="+Server.UrlEncode(aLessionID);  
  parent.Nodes.Add(aTreeNode);  
  if(row.ItemArray[2].ToString()=="1")  
  {  
  LoadChildNodes(aTreeNode,aLessionID);  
  }  
  }  
  }Top

6 楼sunnystar365(一个人的天空)回复于 2005-08-25 10:32:02 得分 0

从数据库读取节点信息  
   
  保存节点信息的   Table   基本结构为  
   
  1、全部读取并一次性展现  
   
  private   void   Page_Load(object   sender,   System.EventArgs   e)  
   
  {  
   
  if(IsPostBack)  
   
  {  
   
  return;  
   
  }  
   
  DBSystem.ExecuteSQL   tmp   =   new   DBSystem.ExecuteSQL("T");  
   
  DataTable   dt   =   tmp.GetDataTable("select   *   from   TreeView");//从数据库抓出数据  
   
  this.AddNodes(dt,null,"0");   //添加节点  
   
  this.TreeView1.SelectedNodeIndex="";   //不选中任何节点。  
   
  /*下一节将介绍如何修改TreeView.cs   源码来取消默认选中节点的方法*/  
   
  }  
   
   
   
  ///    
   
  ///   添加节点及其包含的子节点  
   
  ///    
   
  ///   从数据库抓出的   DataTable  
   
  ///   将要添加子节点的父节点  
   
  ///   父节点的   ID,“0”   为根节点  
   
  private   void   AddNodes(DataTable   dt,TreeNode   node,string   id)  
   
  {  
   
  DataRow[]   rows   =   dt.Select("ParentID="+id);   //筛选出属于父节点   “node”的子节点集合  
   
  foreach(DataRow   dr   in   rows)   //循环子节点集合  
   
  {  
   
  TreeNode   nd   =   new   TreeNode();  
   
  nd.NavigateUrl=dr["URL"].ToString();   //设置浏览的网址  
   
  nd.NodeData=dr["NodeID"].ToString();   //存放节点   ID  
   
  nd.Text=dr["NodeName"].ToString();   //设置节点名称  
   
  this.AddNodes(dt,nd,nd.NodeData);   //递归,添加该节点的子节点  
   
  if(node==null   ||   id=="0")  
   
  {  
   
  this.TreeView1.Nodes.Add(nd);   //添加至根节点  
   
  }  
   
  else  
   
  {  
   
  node.Nodes.Add(nd);   //添加子节点  
   
  }  
   
  }  
   
   
   
  2、   展开节点时读取该节点的数据  
   
  TreeView   控件属性→   自动提交(AutoPostBack)   →   True  
   
   
   
   
   
  TreeView   控件属性→   事件   →   双击展开(Expand)  
   
   
   
   
   
  private   void   Page_Load(object   sender,   System.EventArgs   e)  
   
  {  
   
  if(!IsPostBack)  
   
  {  
   
  this.AddSingleNode(null,"0");   //找出根节点  
   
  }  
   
  this.TreeView1.SelectedNodeIndex="";   //不选中任何节点  
   
  }    
   
   
   
  ///    
   
  ///   展开节点时,触发的事件  
   
  ///    
   
  ///   TreeView   控件  
   
  ///    
   
  private   void   TreeView1_Expand(object   sender,   Microsoft.Web.UI.WebControls.TreeViewClickEventArgs   e)  
   
  {  
   
  TreeNode   nd   =   this.TreeView1.GetNodeFromIndex(e.Node);   //找到触发事件的节点,即正在展开的节点  
   
  if(nd.Nodes[0].NodeData=="")   //第一次加载,即只有“正在加载……”这一项  
   
  {  
   
  this.AddSingleNode(nd,nd.NodeData);   //加载子节点  
   
  }  
   
  }  
   
   
   
  ///    
   
  ///   只查找、添加单个节点下的子节点  
   
  ///    
   
  ///   需要添加子节点的   TreeNode  
   
  ///   该节点的   NodeID    
   
  private   void   AddSingleNode(TreeNode   node,string   id)  
   
  {  
   
  if(node!=null   &&   id!="0")  
   
  {  
   
  node.Nodes.Clear();//清空节点,主要是把“正在加载……”这一项移除  
   
  }  
   
  DBSystem.ExecuteSQL   tmp   =   new   DBSystem.ExecuteSQL("T");  
   
  DataTable   dt   =   tmp.GetDataTable("select   *   from   TreeView   where   ParentID="+id);//从数据库抓出数据  
   
  foreach(DataRow   dr   in   dt.Rows)   //历遍所有子节点  
   
  {  
   
  TreeNode   nd   =   new   TreeNode();  
   
  nd.NavigateUrl=dr["URL"].ToString();   //设置浏览的网址  
   
  nd.NodeData=dr["NodeID"].ToString();   //存放节点   ID  
   
  nd.Text=dr["NodeName"].ToString();   //设置节点名称  
   
   
   
  TreeNode   child   =   new   TreeNode();   //此节点只作为“nd”展开的依据,并无它意  
   
  child.Text="正在加载……";  
   
  nd.Nodes.Add(child);  
   
  if(node==null||   id=="0")  
   
  {  
   
  this.TreeView1.Nodes.Add(nd);   //添加至根节点  
   
  }  
   
  else  
   
  {  
   
  node.Nodes.Add(nd);   //添加子节点  
   
  }  
   
  }  
   
  }  
   
  五、   修改“TreeView.cs”源码,取消   TreeView   默认选中节点  
   
  1、TreeView.cs   文件  
   
  在文中﹐找到   “   protected   override   void   OnLoad(EventArgs   e)”事件  
   
  “   protected   override   void   OnPreRender(EventArgs   e)”   事件,修改以下代码  
   
   
   
  if   ((SelectedNodeIndex   ==   ""   ||   SelectedNodeIndex   ==   String.Empty)   &&   Nodes.Count   >   0)  
   
  //SelectedNodeIndex   =   "0";   //修改前  
   
  SelectedNodeIndex   =   "";   //修改后  
   
   
   
  2、TreeView.htc   文件  
   
  在“C:\Inetpub\wwwroot\webctrl_client\1_0\   TreeView.htc”中找到“function   ondocumentready()”把以下代码注释掉  
   
  //   verify   selectedNodeIndex    
   
  /******************   Change   By   Jerry   On   2005-01-25   ******************/    
   
  /*    
   
  if   (getNodeFromIndex(selectedNodeIndex)   ==   null)   {   if   (getNodeFromIndex("0")   !=   null)   selectedNodeIndex   =   "0";   else   selectedNodeIndex   =   "";   }    
   
  */    
   
  /******************   Change   By   Jerry   On   2005-01-25   ******************/  
   
  在“function   tryToBuildTreeFromRoot()”修改以下代码  
   
  if   (selectedNodeIndex.length   ==   0)  
   
  {    
   
  //prop_selectedNodeIndex   =   "0";   //修改前  
   
  prop_selectedNodeIndex   =   "";   //修改后  
   
  }  
   
  3、使用  
   
  修改“TreeView.cs”后,重新编译一次,生成新的“Microsoft.Web.UI.WebControls.dll”。应用时只需要设置“SelectedNodeIndex”为   “”   即可  
   
  this.TreeView1.SelectedNodeIndex="";   //不选中任何节点。  
   
   
   
  六、   使用   XML   文档创建   TreeView  
   
  1、XML   文档的要求  
   
  a)   描述节点名称是固定的“”与“”    
   
  b)   虽然   XML   文文件对字母的大小写严格区分,但绑定时会忽略  
   
  c)   “”节点中的属性,必须与   TreeView   控件中的   TreeNode   属性对应  
   
  d)   “”节点中的文本不能写在节点内,只能以   “Text”属性出现,如“Node01”行不通,应为“”  
   
  以下是一个可用于“TreeView”控件绑定源的范例﹕  
   
   
  2、绑定的代码  
   
  this.TreeView1.TreeNodeSrc="TreeXML.xml";  
   
  this.TreeView1.DataBind();  
 

posted @ 2008-09-08 15:19  南守拥  阅读(407)  评论(0编辑  收藏  举报