[TreeView]使用總彙聚

相信只要你仔細閱讀了這篇小菜文,並參考一下提供的例程,一定能夠掌握TREE的基本用法!

1.工欲善其事,必先利其器。首先保證裝好你的組件,這個包安裝非常方便,只要運行一下即可在VS.NET的工具欄中找到並使用了:
http://218.56.11.178:8018/FileDown.aspx?FID=4
也可以關注一下官方站是否有新版發佈:
http://msdn.microsoft.com/downloads/samples/internet/default.asp?url=/Downloads/samples/Internet/ASP_DOT_NET_ServerControls/WebControls/default.asp

2.常用的幾個屬性和方法
~Index 獲取樹節點在樹節點集合中的位置。
~Nodes 獲取分配給樹視圖控件的樹節點集合。
~Parent  獲取或設置控件的父容器。
~SelectedNode 獲取或設置當前在樹視圖控件中選定的樹節點。
~ExpandAll 展開所有樹節點。
~Checked 獲取或設置一個值,用以指示樹節點是否處於選中狀態。
~Text 獲取或設置在樹節點標籤中顯示的文本。
~Expand 展開樹節點。
~Clear 清空樹
~Remove 從樹視圖控件中移除當前樹節點。
以上由其他網友總結,補充:
~Height 控件的高度
~Width 控件的寬度
~BackColor 背景顏色
~BorderColor 邊框顏色
~BorderStyle 邊框樣式
~BorderWidth 邊框寬度
~CssClass 應用於該控件的CSS類名
~ExpandedImageUrl 展開時顯示的節點圖標
~ImageUrl 未選擇或展開是顯示的節點圖標
~SelectedImageUrl 選中狀態下顯示的節點圖標
~Indent 縮進距離,只有在ShowLines設爲TRUE時才生效。
~ShowLines 是否顯示層級連接線
~ShowPlus 是否顯示+/-符號按鈕
~ShowToolTip 在有父節點上顯示工具提示(+/-號的使用展開/關閉)。
~AccseeKey 控件使用的鍵盤快捷鍵
~AutoSelect 爲TRUE時,當用鍵盤移動節點時,自動選擇新節點
~AutoPostBack 當改變狀態時,自動回存
~Enabled 控制控件的啓用狀態
~EnableViewState 控件是否自動保存其狀態以用於往返行程
~ExpandLevel 初始化控件是展開節點的層數
~SelectExpands 當選中一個接點時,是否自動展開該節點
~TabIndex TAB鍵次序
~Visible 控件是否可見

3.實用技巧:
1)怎樣點擊文字(不是+/-號)即可展開(收縮)子節點
將TREE的ShowToolTip 屬性設爲false即可。

2)當鼠標指到某父接點時,如何不顯示顯示“節點名:user +/- to expand/collapse”
將TREE的SelectExpands 屬性設爲TRUE即可。

3)不顯示樹型的問題
首先:控件包沒裝好,使用上邊介紹的控件包裝一下試試。
其次:TreeView要求客戶端瀏覽器版本爲IE5.5及以上,最好要求客戶端升級爲IE6.0

4)關於閃爍
將AutoPostBack屬性設置爲真,SelectedIndexChange才能被執行。不過這樣的話刷新的很厲害。不要刷新的話,將AutoPostBack屬性設置爲FALSE.

5)如何實現用鍵盤上下左右鍵移動焦點時,自動選擇新節點並執行新節點 
將TREE的AutoSelect 屬性設爲TRUE即可。

6)不想顯示+/-符號按鈕怎麼做?
將TREE的ShowPlus 屬性設爲False即可。

7)不想顯示層級連接線怎麼做?
將TREE的ShowLines 屬性設爲False即可。

8)如何設置節點旁的圖標
~ExpandedImageUrl、ImageUrl、SelectedImageUrl這3個屬性是控制圖標的,選擇自己喜歡的就OK了。

4.看看這個例子,對你一定有啓發,是一棵無級樹,不過在實際使用中可能會有些麻煩:
http://218.56.11.178:8018/FileDown.aspx?FID=246

5.這個論壇也使用了樹(asp.net+C#+MSSQL 2000),並且代碼開放,,如果覺得有參考價值,不妨裝起來看看,其中還包含了其他一些常用的asp.net編程技巧,演示了TREE控件如何和數據庫結合,動態顯示庫中的數據,這棵樹只有兩層,不過比較實用:
http://218.56.11.178:8018/FileDown.aspx?FID=212
其中:tree.aspx、tree.aspx.cs是TREE控件使用的主要部分。

論壇的實際應用演示地址,在這裏:
http://expert.kaer.cn/

 

 

 


TreeView使用集錦    hgknight(原作)

原來在論壇裏發過專題帖子,只是由於帖子丟失原因,有些問題找不到了,同時這次也補充了一些,發到文檔區以方便查詢吧
原貼
http://expert.csdn.net/Expert/topic/1525/1525202.xml

1.下載地址
http://msdn.microsoft.com/downloads/samples/internet/ASP_DOT_NET_ServerControls/WebControls/default.asp
下載後是後綴爲bat的版本
(1)bulid.將bulid.bat的路徑指向csc.exe所在路徑,生成Microsoft.Web.UI.WebControls.dll。
(2)在wwwroot下創建空目錄webctrl_client/1_0。
(3)將build/Runtime下的文件拷至webctrl_client/1_0下。
(4)選擇工具箱的自定義工具箱,添加Microsoft.Web.UI.WebControls.dll。
有些麻煩
但如果你能找到後綴是msi的自動安裝版本,直接下一步就行(我一直用這個版本,hoho)
安裝後,通過“自定義工具箱”->“.net框架組件”把TreeView添加到工具箱裏

2.運行時無法顯示
一般是TreeView的版本問題,最好下載英文版自動安裝版本重新安裝,安裝前應該先到添加刪除程序裏卸掉原版本

3.顯示格式出錯(非樹狀顯示)
TreeView要求客戶端瀏覽器版本爲IE5.5及以上,最好要求客戶端升級爲IE6.0

4.框架裏使用TreeView
設置NavigateUrl、Target屬性,可更新另外的Frame

5.找不到TreeNode類
使用TreeView,最好添加namespace:using Microsoft.Web.UI.WebControls;

6.遍歷TreeView節點(遞歸算法)
private void Page_Load(object sender, System.EventArgs e)
{
 GetAllNodeText(TreeView1.Nodes);
}
void GetAllNodeText(TreeNodeCollection tnc)
{
 foreach(TreeNode node in tnc)
 {
  if(node.Nodes.Count!=0)
   GetAllNodeText(node.Nodes);
  Response.Write(node.Text + " ");
 }
}

7.得到node結點的父節點
TreeNode pnode;
if(node.Parent is TreeNode)
 pnode=(TreeNode)node.Parent;
else
 //node is root node

8.修改TreeView樣式(示例)
<iewc:TreeView id="TreeView1" runat="server" HoverStyle="color:blue;background:#00ffCC;" DefaultStyle="background:red;color:yellow;" SelectedStyle="color:red;background:#00ff00;">
用代碼:
TreeView1.DefaultStyle["font-size"] = "20pt";

9.展開時不提交,改變選擇節點時才提交
將autopostback設置成false; 
在body裏添加  <body  οnlοad="initTree()"> 
然後在PageLoad裏寫: 
string  strTreeName  =  "TreeView1"; 
string  strRef  =  Page.GetPostBackEventReference(TreeView1); 
string  strScript  =  "<script  language=/"JavaScript/">  /n"  +  "<!--  /n"  +  "            function  initTree()  {  /n"  +"                        "  +  strTreeName  +  ".onSelectedIndexChange  =  function()  {  /n"  +    "if  (event.oldTreeNodeIndex  !=   
event.newTreeNodeIndex)  /n"  +  "this.queueEvent('onselectedindexchange',  event.oldTreeNodeIndex  +  ','  +  event.newTreeNodeIndex);  /n"  +    "window.setTimeout('"  +  strRef.Replace("'","//'")    +  "',  0,  'JavaScript');  /n"  +    "                        }  /n"  +      "            }  /n"  +    "//  -->  /n"  +  "</script>"; 
Page.RegisterClientScriptBlock("InitTree",strScript  ); 
 
這樣就只有你點擊的節點更改的時候才提交!

10.TreeView結合XML
把XML文件設置爲如下格式,然後直接設置TreeNodeSrc爲該XML文件就行
<?xml version="1.0" encoding="GB2312"?>
<TREENODES>
 <TREENODE TEXT="node0" EXPANDED="true">
  <TREENODE TEXT="node1"/>
  <TREENODE TEXT="node2"/>
 </TREENODE>
 <TREENODE TEXT="node3" NavigateURL="3.aspx"/>
</TREENODES>
或者用代碼
TreeView1.TreeNodeSrc="a.xml";
TreeView1.DataBind();

 

客戶端控制TreeView
http://expert.csdn.net/Expert/topic/1382/1382892.xml

1.設置所選節點,如選中第二個節點
function SetSelNode()
{
 TreeView1.selectedNodeIndex="1";
}

2.得到所選節點的Text,ID或NodeData
function GetAttribute()
{
 alert(TreeView1.getTreeNode(TreeView1.selectedNodeIndex).getAttribute("Text"));
}
替換Text爲ID或NodeData,可分別得到所選節點的ID或NodeData

3.修改節點屬性,如修改第一個節點的Text
function ModifyNode()
{
 var node=TreeView1.getTreeNode("0");
 node.setAttribute("Text","hgknight");
}

4.得到點擊節點
function TreeView1.onclick()
{
 alert(TreeView1.getTreeNode(TreeView1.clickedNodeIndex).getAttribute("Text"));
}

5.添加節點
function AddNode()
{
 var node=TreeView1.createTreeNode();
 node.setAttribute("Text","hgknight");
 TreeView1.add(node);   
}

6.js遍歷所有節點
 var AllRootNode=new Array();
 AllRootNode=TreeView1.getChildren();
 AlertNode(AllRootNode);  

 function AlertNode(NodeArray)
 {
  if(parseInt(NodeArray.length)==0)
   return;
  else
  {
   for(i=0;i<NodeArray.length;i++)
   {
    var cNode;
    cNode=NodeArray[i];
    alert(cNode.getAttribute("Text"));
    if(parseInt(cNode.getChildren().length)!=0)
     AlertNode(cNode.getChildren());   
   }
  }
 }


這裏是微軟的教程:http://www.microsoft.com/china/MSDN/library/archives/library/DNAspp/html/aspnet-usingtreeviewieWebcontrol.asp

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章