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();   
  
.jpg) 
  
 
                    
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号