免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
ASP.NET TREEVIEW 使用方法(2) - yyf919 - 博客園
asp.net TreeView安裝、使用(如何將TreeView打包發(fā)布)(帶CheckBox選擇框的TreeView的初始化,TreeView客戶端操作:選擇父節(jié)點(diǎn)后自動(dòng)選擇所有子節(jié)點(diǎn),子節(jié)點(diǎn)選擇后自動(dòng)選擇父節(jié)點(diǎn))(TreeView節(jié)點(diǎn)精確定位)

2.包括TreeView的asp.net程序的打包問(wèn)題:
http://ttyp.cnblogs.com/archive/2005/06/01/165621.html
http://community.csdn.net/Expert/topic/4300/4300558.xml?temp=.7716028

在web.config加入以下節(jié)

 

    
<configSections>
        
<section name="MicrosoftWebControls" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />    
    
</configSections>
 
    
<MicrosoftWebControls>
        
<add key="CommonFiles" value="/web/treepath/"></add>        
    
</MicrosoftWebControls>


注意:configSections一定要放在第一個(gè)子節(jié)最前面.

剪切默認(rèn)網(wǎng)站的webctrl_client目錄到虛擬目錄web/treepath/下,運(yùn)行程序,

樹(shù) 型界面出現(xiàn)了,只是前面的加減號(hào)出現(xiàn)問(wèn)題,再右鍵查看WEB代碼,發(fā)現(xiàn)SystemImagesPath屬性還是指到webctrl_client目錄 下,看了SystemImagesPath的代碼,把treeview控件的SystemImagesPath設(shè)置為空,再次運(yùn)行程序,OK!全部通過(guò), treeview的圖片目錄再也不需要依賴默認(rèn)網(wǎng)站的圖片目錄了,打包也變的方便了

3.客戶端操作TreeView帶CheckBox的好例子(1)--選擇 /取消父節(jié)點(diǎn)后其所有子節(jié)點(diǎn)自動(dòng)選擇 /取消。不過(guò)里面有點(diǎn)小問(wèn)題要注意:

(1)就是如何初始化已經(jīng)選擇的節(jié)點(diǎn):注意要從客戶端初始化的(把選擇的節(jié)點(diǎn)放在客戶端一個(gè)隱藏域里通過(guò)JS初始化).如果你在服務(wù)器端初始化了將無(wú)法在客戶端修改它的狀態(tài).

(2) 如何獲得客戶端設(shè)置的節(jié)點(diǎn):在客戶端改變了選擇狀態(tài)(node.setAtrribute("check","ture"))后,通過(guò)服務(wù)器端是無(wú)法獲得 選擇的值的,也只能在客戶端獲得它(通過(guò)一個(gè)input type="hiiden" runat="server"來(lái)保存選擇的值).
上面兩個(gè)問(wèn)題都是參考了下面的代碼完成的.


兩個(gè)客戶端操作TreeView節(jié)點(diǎn)CheckBox的小例子 (轉(zhuǎn)江雨.net)(自動(dòng)選擇子節(jié)點(diǎn))
下面是修改后詳細(xì)代碼:

<script language="javascript">

            
//初始化選中節(jié)點(diǎn)
            function initchecknode()
            
{
                
//獲得需要初始化選擇狀態(tài)的節(jié)點(diǎn)的字符串.
                var selectedNodes = document.all.checkedNodes.value;
                
var arrayNodes = new Array();
                arrayNodes 
= selectedNodes.split(",");
                
var AllRootNode=new Array();
                AllRootNode
=document.getElementById("TreeView1").getChildren();
                
//初始化選擇的節(jié)點(diǎn)
                findAndCheckedNodes(AllRootNode,arrayNodes);
            }


            
//根據(jù)已選擇的節(jié)點(diǎn)的字符串初始化選擇的節(jié)點(diǎn)
            function findAndCheckedNodes(NodeArray,nodeDatas)
            
{
                
//alert(NodeArray.length);
                 if(parseInt(NodeArray.length)==0)
                 
{
                    
return;
                }

                
else
                
{
                    
for(var i=0;i<parseInt(NodeArray.length);i++)
                    
{
                        
var cNode,nodeData;
                        cNode
=NodeArray[i];
                        
////如果該節(jié)點(diǎn)在nodeDatas里則初始化checked = true;
                        nodeData = cNode.getAttribute("NodeData");
                        
for(var j=0;j<nodeDatas.length;j++)
                        
{
                            
if(nodeDatas[j] == nodeData)
                            
{
                                cNode.setAttribute(
"checked","true");
                                
break;
                            }

                        }

                        
//如果有子節(jié)點(diǎn),則繼續(xù)遞歸
                        if(parseInt(cNode.getChildren().length)!=0)
                        findAndCheckedNodes(cNode.getChildren(),nodeDatas);    
                    }

                }

            }

            
            
//節(jié)點(diǎn)的oncheck事件
            function tree_oncheck(tree)
            
{
                
var node=tree.getTreeNode(tree.clickedNodeIndex);
                
var Pchecked=tree.getTreeNode(tree.clickedNodeIndex).getAttribute("checked");
                setcheck(node,Pchecked);
                document.all.checkedNodes.value
="";
                document.all.unchecked.value
="";
                FindCheckedFromNode(TreeView1);
            }

            
//設(shè)置子節(jié)點(diǎn)選中
            function setcheck(node,Pc)
            
{
                
var i;
                
var ChildNode=new Array();
                ChildNode
=node.getChildren();
                 
                
if(parseInt(ChildNode.length)==0)
                    
return;
                
else
                
{
                    
for(i=0;i<ChildNode.length;i++)
                    
{
                        
var cNode;
                        cNode
=ChildNode[i];
                        
if(parseInt(cNode.getChildren().length)!=0)
                            setcheck(cNode,Pc);
                        cNode.setAttribute(
"checked",Pc);
                    }

                }

            }

            
//獲取所有節(jié)點(diǎn)狀態(tài)
            function FindCheckedFromNode(node) 
            
{
                
var i = 0;
                
var nodes = new Array();
                nodes 
= node.getChildren();
                 
                
for (i = 0; i < nodes.length; i++
                
{
                    
var cNode;
                    cNode
=nodes[i];
                    
if (cNode.getAttribute("checked"))
                        AddChecked(cNode);
                    
else
                        AddUnChecked(cNode);
                      
                    
if (parseInt(cNode.getChildren().length) != 0 ) 
                    
{
                        FindCheckedFromNode(cNode);
                    }

                }

            }

            
//添加選中節(jié)點(diǎn)
            function AddChecked(node) 
            
{
                document.all.checkedNodes.value 
+= node.getAttribute("NodeData");
                document.all.checkedNodes.value 
+= ‘,‘;
            }

            
//添加未選中節(jié)點(diǎn)
            function AddUnChecked(node)
            
{
                document.all.unchecked.value 
+= node.getAttribute("NodeData");
                document.all.unchecked.value 
+= ‘,‘;
            }

            
        
</script>

 

    <body MS_POSITIONING="FlowLayout" onload="initchecknode()">
        
<form id="Form1" method="post" runat="server">
            
<FONT face="宋體">
                
<TABLE class="main" id="Table1">
                    
<TR>
                        
<TD></TD>
                        
<TD align="center" height="50">權(quán)限管理</TD>
                        
<TD></TD>
                    
</TR>
                    
<TR>
                        
<TD></TD>
                        
<TD>用戶名:
                            
<asp:label id="lblUserName" runat="server">Label</asp:label></TD>
                        
<TD></TD>
                    
</TR>
                    
<TR>
                        
<TD></TD>
                        
<TD><iewc:treeview id="TreeView1" runat="server" ExpandLevel="1" SelectExpands="True" SystemImagesPath="/webctrl_client/1_0/treeimages/"
                                ImageUrl
="images/fclose.gif" SelectedImageUrl="images/bookmark.gif" ExpandedImageUrl="images/fopen.gif"
                                Target
="main" AutoSelect="True" wilth="100%"></iewc:treeview></TD>
                        
<TD></TD>
                    
</TR>
                    
<TR>
                        
<TD></TD>
                        
<TD align="center" height="50">
                            
<asp:button id="BtnSure" runat="server" Text="保存"></asp:button> 
                        
</TD>
                        
<TD></TD>
                    
</TR>
                
</TABLE>
            
<INPUT id="checkedNodes" type="hidden" size="32" runat="server" NAME="checkedNodes"> <!--已經(jīng)選擇的節(jié)點(diǎn)每個(gè)節(jié)點(diǎn)間用","分隔.-->
            
<INPUT id="unchecked" type="hidden" size="32">
        
</form>
    
</body>

主要后臺(tái)代碼:




        
//數(shù)據(jù)訪問(wèn)實(shí)例
protected ClassConn connE = new ClassConn();

private void Page_Load(object sender, System.EventArgs e)
{
    
// 在此處放置用戶代碼以初始化頁(yè)面
    if ( !IsPostBack)
    
{
        TreeView1.Attributes.Add(
"oncheck","tree_oncheck(this)");
        ViewState[
"UserId"= Request.QueryString["id"]+string.Empty;

        
//初始化用戶名
        lblUserName.Text=connE.GetFieldValue("string","select name from EPM_EmployeeList where id = "+ViewState["UserId"].ToString());
        ViewState[
"dsTree"= connE.getDs("select * from EPM_DepartmentList where corpid="+Session["EnterpriseId"].ToString()+" and (type ="+Session["EnterpriseType"].ToString()+" or type=2)  and state=1 order by ShowIndex");
        connE.Close();
        
//初始化權(quán)限信息    
        InitData();


        
    }

}



/// <summary>
/// 初始化權(quán)限樹(shù).
/// </summary>
/// <param name="nFatherid">父節(jié)點(diǎn)的ID</param>
/// <param name="node"></param>

protected void initTree( int nFatherid,TreeNode fatherNode)
{
    DataSet ds 
= (DataSet)ViewState["dsTree"];
    DataView dv 
= new DataView(ds.Tables[0]);
    dv.RowFilter 
= "[parentDeptid] = "+nFatherid;
    
    
foreach ( DataRowView Row in dv )
    
{
        TreeNode node 
= new TreeNode();
        
if (fatherNode == null)//根節(jié)點(diǎn)
        {
            node.Text
=Row["name"].ToString();
            node.NodeData 
= Row["id"].ToString();
            node.CheckBox 
= true;
            
this.TreeView1.Nodes.Add(node);
            
//node.Expanded=false;//是否展開(kāi),若設(shè)置為true 則ExpandLevel="1" 無(wú)效
            initTree(Int32.Parse(Row["id"].ToString()),node);//遞歸
        }

        
else
        
{
            node.Text 
= Row["name"].ToString();
            node.NodeData 
= Row["id"].ToString();
            
//node.NavigateUrl = Row["url"].ToString();
            node.CheckBox = true;
            fatherNode.Nodes.Add(node);
            initTree(Int32.Parse(Row[
"id"].ToString()),node);//遞歸
        }

    }


}


/// <summary>
/// 設(shè)置權(quán)限的字符串,沒(méi)個(gè)權(quán)限間用逗號(hào)分隔.
/// </summary>
/// <returns></returns>

private string  InitPowers()
{
    
string strPowers = string.Empty;
    
string strSql = "select id, DeptID from  EPM_PowerList where EMPid ="+ViewState["UserId"].ToString();
    SqlDataReader reader 
= connE.getDreader(strSql);
    
while(reader.Read())
    
{
        
if (strPowers.Length == 0)
        
{
            strPowers 
= reader[1].ToString();
        }

        
else
        
{
            strPowers 
+= ","+reader[1].ToString();
        }

    }

    reader.Close();
    
return strPowers;
}


/// <summary>
/// 初始化權(quán)限樹(shù)
/// </summary>

private void InitData()
{
    
//獲得權(quán)限字符串
    string strPowers = InitPowers();
    
//把權(quán)限字符串賦給checkedNodes.
    this.checkedNodes.Value = strPowers;
    
//初始化菜單樹(shù),使用遞歸調(diào)用.
    this.TreeView1.Nodes.Clear();
    initTree(
0,(TreeNode)null);
}




/// <summary>
/// 保存權(quán)限的設(shè)置
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>

private void BtnSure_Click(object sender, System.EventArgs e)
{
    
//先刪除原來(lái)權(quán)限的設(shè)置
    string strSql = "delete from EPM_PowerList where empid="+ViewState["UserId"].ToString();
    connE.runSqlOnly(strSql);
    
//重新設(shè)置權(quán)限
    SaveTree();
    connE.Alert(
"保存成功!",Page);

    
//重新在服務(wù)器端初始權(quán)限信息
    InitData();
    
}


/// <summary>
/// 保存樹(shù)中已選擇的節(jié)點(diǎn)
/// </summary>


protected void SaveTree()
{
    
//獲得所有已經(jīng)選擇的接點(diǎn)
    string strSelected = string.Empty;
    strSelected 
= this.checkedNodes.Value;
    
if(strSelected != string.Empty)
    
{
        strSelected 
= strSelected.Substring(0,strSelected.Length-1);
        
string [] strSelecteds  = strSelected.Split(,);
        
foreach(string str in strSelecteds)
        
{
            
string strSql = "insert EPM_PowerList (EMPid,deptid) values (‘"+ViewState["UserId"].ToString()+"‘,‘"+str+"‘)";
            connE.runSqlOnly(strSql);
        }

    }

    
}


3.客戶端操作TreeView帶CheckBox的好例子(2)--選擇子節(jié)點(diǎn)后自動(dòng)選擇父節(jié)點(diǎn);取消子節(jié)點(diǎn)后根據(jù)情況的遞歸取消父節(jié)點(diǎn)。
把上面的tree_oncheck()修改一下,然后增加兩個(gè)方法setParent()和checkBrother(),代碼如下:

//節(jié)點(diǎn)的oncheck事件
function tree_oncheck(tree)
{
    
var node=tree.getTreeNode(tree.clickedNodeIndex);
    
var Pchecked=tree.getTreeNode(tree.clickedNodeIndex).getAttribute("checked");
    setcheck(node,Pchecked);
    setParent(node,Pchecked);
//如果是選擇那么選擇其父接點(diǎn).
    document.all.checkedNodes.value="";
    document.all.unchecked.value
="";
    FindCheckedFromNode(TreeView1);
}


//設(shè)置子節(jié)點(diǎn)選中/取消;
//
同時(shí)需要設(shè)置父節(jié)點(diǎn)的狀態(tài)(如果是取消選中的話,僅僅設(shè)置本節(jié)點(diǎn)及其所有字接點(diǎn),不涉及父接點(diǎn))
function setParent(node,Pc)
{
    
var parentNode = node.getParent();
    
if(parentNode)
    
{    
        
var parentNodeFather = parentNode.getParent();
        
if(parentNodeFather)
        
{
            setParent(parentNode,Pc);
        }

        
if(Pc)
            
{parentNode.setAttribute("checked",Pc);}
        
else
        
{
            checkBrother(parentNode,Pc,node.getAttribute(
"NodeData"))
        }

    }

}

//檢查子接點(diǎn)是否有選擇的,如果有一個(gè)選擇了,那返回true
//
只查第一級(jí)節(jié)點(diǎn).
function checkBrother(parentNode,Pc,nodeData)
{
    
var childNodes = new Array();
    childNodes 
= parentNode.getChildren();
    
if(childNodes.length >0)
    
{
        
var bChecked = true;
        
for(var i=0;i<childNodes.length;i++)
        
{
            
if(childNodes[i].getAttribute("checked"== true &&  childNodes[i].getAttribute("NodeData"!= nodeData)
            
{
                
//alert(i+childNodes[i].getAttribute("Text"));
                bChecked = false;
                
break;
            }

        }

        
if(bChecked)
        
{
            parentNode.setAttribute(
"checked",Pc);
        }

        
else
        
{
            
//所有父結(jié)點(diǎn)選擇
            setParent(parentNode,!Pc)
        }

    }

    
else
    
{
        parentNode.setAttribute(
"checked",Pc);
    }

}



4.TreeView節(jié)點(diǎn)的精確定位問(wèn)題(通過(guò)NodeData來(lái)定位)

    //Page_Load事件里根據(jù)NodeData來(lái)展開(kāi)到到定位的節(jié)點(diǎn)
    
//這里是修改別人的(作者是根據(jù)Node的Text定位的.
    FindInTree2(Request.QueryString["selectedNodeData"].ToString());

    
//根據(jù)NodeDate尋找節(jié)點(diǎn)
    private void FindInTree2(string strNodeData)
    
{  
        
foreach (TreeNode tn in TreeView1.Nodes)            
        
{
            
if (tn.NodeData != strNodeData)
            
{   
                FindInTree2(tn,strNodeData);
            }
 
            
else
            
{   
                ExpandTree2(tn);
                
return;
            }

        }

    }

    
//根據(jù)NodeDate尋找節(jié)點(diǎn)
    private void FindInTree2(TreeNode objTreeNode,string strNodeData)
    
{   
        
foreach (TreeNode tn in objTreeNode.Nodes)            
        
{
            
if (tn.NodeData != strNodeData)
360docimg_501_            
{
360docimg_503_
360docimg_504_                FindInTree2(tn,strNodeData);
360docimg_505_            }
 
360docimg_506_            
else
360docimg_507_360docimg_508_            
{   
360docimg_510_                ExpandTree2(tn);
360docimg_511_                
return;
360docimg_512_            }

360docimg_513_        }

360docimg_514_    }

360docimg_515_    
//根據(jù)NodeDate展開(kāi)節(jié)點(diǎn)
360docimg_516_
    private void ExpandTree2(TreeNode objTreeNode)
360docimg_517_360docimg_518_    
{   
360docimg_520_        
string strIndex = "0";
360docimg_521_
360docimg_522_        objTreeNode.Expanded 
= true;
360docimg_523_
360docimg_524_        strIndex 
= objTreeNode.GetNodeIndex();
360docimg_525_
360docimg_526_        
while (objTreeNode.Parent is TreeNode)
360docimg_527_360docimg_528_        
{
360docimg_530_            objTreeNode 
= ((TreeNode)objTreeNode.Parent);
360docimg_531_            objTreeNode.Expanded 
= true;                
360docimg_532_        }

360docimg_533_
360docimg_534_        TreeView1.SelectedNodeIndex 
= strIndex;
360docimg_535_    }



5.asp.net 2.0里TreeView已經(jīng)集成了,不需要單獨(dú)安裝了,但現(xiàn)在偶覺(jué)得,他只是換湯不換藥,特別是在節(jié)點(diǎn)定位,和客戶端操作上這兩個(gè)關(guān)鍵問(wèn)題上沒(méi)啥改進(jìn).(偶沒(méi)用過(guò)只是看了它的介紹.)

ASP.NET 2.0 的TreeView 控件介紹(轉(zhuǎn)載)

TreeView客戶端操作在這里啊~~~~~~~~~~~~
http://msdn.microsoft.com/library/default.asp?url=/workshop/webcontrols/behaviors/library/TreeView/TreeView.asp

http://www.microsoft.com/china/msdn/archives/library/workshop/webcontrols/overview/treeview.asp



1.下面的為轉(zhuǎn)載:

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下創(chuàng)建空目錄webctrl_client\1_0。
(3)將build\Runtime下的文件拷至webctrl_client\1_0下。
(4)選擇工具箱的自定義工具箱,添加Microsoft.Web.UI.WebControls.dll。
有些麻煩
但如果你能找到后綴是msi的自動(dòng)安裝版本,直接下一步就行(我一直用這個(gè)版本,hoho)
安裝后,通過(guò)“自定義工具箱”->“.net框架組件”把TreeView添加到工具箱里

2.運(yùn)行時(shí)無(wú)法顯示
一般是TreeView的版本問(wèn)題,最好下載英文版自動(dòng)安裝版本重新安裝,安裝前應(yīng)該先到添加刪除程序里卸掉原版本

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

4.框架里使用TreeView
設(shè)置NavigateUrl、Target屬性,可更新另外的Frame

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

6.遍歷TreeView節(jié)點(diǎn)(遞歸算法)
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結(jié)點(diǎn)的父節(jié)點(diǎn)
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.展開(kāi)時(shí)不提交,改變選擇節(jié)點(diǎn)時(shí)才提交
將autopostback設(shè)置成false; 
在body里添加  <body  onload="initTree()"> 
然后在PageLoad里寫(xiě): 
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("‘","Page.RegisterClientScriptBlock("InitTree",strScript  ); 
 
這樣就只有你點(diǎn)擊的節(jié)點(diǎn)更改的時(shí)候才提交!

10.TreeView結(jié)合XML
把XML文件設(shè)置為如下格式,然后直接設(shè)置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();

 11.請(qǐng)問(wèn),在頁(yè)面加載時(shí),如何選中Treeview某一節(jié)點(diǎn)?

index屬性,是一個(gè)如1.1.0的東西,解析這個(gè)字符串,然后定位

private void ExpandNode(string selID)//selID like 1.1.0
{
 char[] mySplit = new char[]{‘.‘};
 string [] nodeArray = selID.Split(mySplit);

 TreeNode myNode = null;
 for(int i=0;i<nodeArray.Length;i++)
 {
  if(i==0)
   myNode = tree.Nodes[Convert.ToInt32(nodeArray[i])];
  else
   myNode = myNode.Nodes[Convert.ToInt32(nodeArray[i])];

  myNode.Expanded = true;  
  tree.SelectedNodeIndex = myNode.GetNodeIndex();
 }   
}

 

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

1.設(shè)置所選節(jié)點(diǎn),如選中第二個(gè)節(jié)點(diǎn)
function SetSelNode()
{
 TreeView1.selectedNodeIndex="1";
}

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

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

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

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

6.js遍歷所有節(jié)點(diǎn)
 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());   
   }
  }
 }

--------------------------------------------------------------------------------------------------------------------------------------------------------

<iewc:treeview id="TreeView1" runat="server" wilth="100%" AutoSelect="True" BorderWidth="2px" Target="main"
ExpandedImageUrl="images/fopen.gif" SelectedImageUrl="images/bookmark.gif" ImageUrl="images/fclose.gif"
BorderColor="AliceBlue" BackColor="#ffffcc" SystemImagesPath="../webctrl_client/1_0/treeimages/"
SelectExpands="True" ExpandLevel="1"></iewc:treeview>
-----------------

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using Microsoft.Web.UI.WebControls;
namespace aspnetc.admin
{
/// <summary>
/// left 的摘要說(shuō)明。
/// </summary>
public class left : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label lblName;
protected Microsoft.Web.UI.WebControls.TreeView TreeView1;
protected System.Web.UI.WebControls.HyperLink hlkLogOut;
protected System.Web.UI.WebControls.Label Label2;

ClassConn connE = new ClassConn();

private void Page_Load(object sender, System.EventArgs e)
{
// 在此處放置用戶代碼以初始化頁(yè)面
if (!IsPostBack)
{
lblName.Text=Session["userName"]!=null ? Session["userName"].ToString():string.Empty;
try
{
//添加命令,從數(shù)據(jù)庫(kù)中得到數(shù)據(jù)
SqlDataAdapter ada = new SqlDataAdapter("select * from menues where state=1 order by sortIndex",connE.GetConn());
DataSet ds=new DataSet();
ada.Fill(ds);
this.ViewState["ds"]=ds;
}
catch (Exception ex)
{
throw (ex);  
}
finally
{
connE.Close();
}
//調(diào)用遞歸函數(shù),完成樹(shù)形結(jié)構(gòu)的生成
AddTree(0, (TreeNode)null);
}
}

#region Web 窗體設(shè)計(jì)器生成的代碼
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 該調(diào)用是 ASP.NET Web 窗體設(shè)計(jì)器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 設(shè)計(jì)器支持所需的方法 - 不要使用代碼編輯器修改
/// 此方法的內(nèi)容。
/// </summary>
private void InitializeComponent()
{   
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

/// <summary>
///  遞歸添加樹(shù)的節(jié)點(diǎn)
/// </summary>
/// <param name="ParentID"></param>
/// <param name="pNode"></param>
public void AddTree(int ParentID,TreeNode pNode)
{
DataSet ds=(DataSet) this.ViewState["ds"];
DataView dvTree = new DataView(ds.Tables[0]);
//過(guò)濾ParentID,得到當(dāng)前的所有子節(jié)點(diǎn)
dvTree.RowFilter =  "[parentId] = " + ParentID;

foreach(DataRowView Row in dvTree)
{
TreeNode Node=new TreeNode() ;
if(pNode == null)
{    //添加根節(jié)點(diǎn)
Node.Text = Row["name"].ToString();
TreeView1.Nodes.Add(Node);
//Node.Expanded=false;//是否展開(kāi)若設(shè)置為true 則ExpandLevel="1"無(wú)效
AddTree(Int32.Parse(Row["ID"].ToString()), Node);    //再次遞歸
}
else

if(4>3)
{
//添加當(dāng)前節(jié)點(diǎn)的子節(jié)點(diǎn)
Node.Text = Row["name"].ToString();
//Node.Target = mainFrame;
Node.NavigateUrl = Row["url"].ToString();
pNode.Nodes.Add(Node);
//Node.Expanded = false;
AddTree(Int32.Parse(Row["ID"].ToString()),Node);     //再次遞歸
}
}
}                  
}           
   

}
}
----------------------------------------------------------------------------------------------------------------------------------------

http://www.microsoft.com/china/MSDN/library/archives/library/DNAspp/html/aspnet-usingtreeviewieWebcontrol.asp


 IEWebControl TreeView右鍵菜單實(shí)例     選擇自 hgknight 的 Blog

一個(gè)IEWebControl TreeView右鍵菜單的例子,實(shí)現(xiàn)了添加、修改和刪除功能,復(fù)制即可運(yùn)行
更多TreeView的客戶端操作參見(jiàn)
http://www.csdn.net/Develop/read_article.asp?id=22100

<%@ Register TagPrefix="iewc" Namespace="Microsoft.Web.UI.WebControls" Assembly="Microsoft.Web.UI.WebControls, Version=1.0.2.226, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
<HTML>
 <HEAD>
  <title>TreeView控件右鍵菜單</title>
  <style>
  <!--
   .skin
   {
   cursor:default;
   font:menutext;
   position:absolute;
   text-align:left;
   font-family: Arial, Helvetica, sans-serif;
   font-size: 10pt;
   width:120px;
   background-color:menu;
   border:1 solid buttonface;
   visibility:hidden;
   border:2 outset buttonhighlight;
   }
   .menuitems
   {
   padding-left:15px;
   padding-right:10px;
   }
   -->
  </style>
 </HEAD>
 <body onclick="hideMenu()">
  <form id="TreeView" method="post" runat="server">
   <iewc:TreeView id="TreeView1" runat="server" ExpandLevel="3" HoverStyle="color:blue;background:#ffff00;">
    <iewc:TreeNode Text="Node0" Expanded="True">
     <iewc:TreeNode Text="Node3">
      <iewc:TreeNode Text="Node5"></iewc:TreeNode>
      <iewc:TreeNode Text="Node6"></iewc:TreeNode>
     </iewc:TreeNode>
     <iewc:TreeNode Text="Node4"></iewc:TreeNode>
    </iewc:TreeNode>
    <iewc:TreeNode Text="Node1" Expanded="True">
     <iewc:TreeNode Text="Node7">
      <iewc:TreeNode Text="Node8"></iewc:TreeNode>
     </iewc:TreeNode>
    </iewc:TreeNode>
    <iewc:TreeNode Text="Node2" Expanded="True">
     <iewc:TreeNode Text="Node9"></iewc:TreeNode>
     <iewc:TreeNode Text="Node10">
      <iewc:TreeNode Text="Node11"></iewc:TreeNode>
      <iewc:TreeNode Text="Node12"></iewc:TreeNode>
     </iewc:TreeNode>
    </iewc:TreeNode>
   </iewc:TreeView>
   <div id="popupMenu" class="skin" onMouseover="highlighItem()" onMouseout="lowlightItem()" onClick="clickItem()">
    <div class="menuitems" func="add">添加</div>
    <hr>
    <div class="menuitems" func="delete">刪除</div>
    <div class="menuitems" func="modify">修改</div>
   </div>
  </form>
  <script language="javascript">
   var menuskin = "skin";
   var node = null;

   function hideMenu()
   {
    popupMenu.style.visibility = "hidden";
   }

   function highlighItem()
   {
    if (event.srcElement.className == "menuitems")
    {
     event.srcElement.style.backgroundColor = "highlight";
     event.srcElement.style.color = "white";
    }
   }

   function lowlightItem()
   {
    if (event.srcElement.className == "menuitems")
    {
     event.srcElement.style.backgroundColor = "";
     event.srcElement.style.color = "black";
     window.status = "";
    }
   }

   function clickItem()
   {    
    if (event.srcElement.className == "menuitems")
    {
     if(event.srcElement.getAttribute("func") == "add" && node != null)
     {
      var newNode=TreeView1.createTreeNode();
      newNode.setAttribute("Text","new Node");
      node.add(newNode);
     }
     else if (event.srcElement.getAttribute("func") == "delete" && node != null)
     {
      node.remove();
     }
     else if (event.srcElement.getAttribute("func") == "modify" && node != null)
     {
      node.setAttribute("Text","hgknight");
     }
    }
   }
   
   function TreeView1.oncontextmenu()
   {
    var nodeindex = event.treeNodeIndex;
    if (typeof(nodeindex) == "undefined")
    {
     node = null;
     return;
    }
    
    node = TreeView1.getTreeNode(nodeindex);
    
    var rightedge = document.body.clientWidth-event.clientX;
    var bottomedge = document.body.clientHeight-event.clientY;
    if (rightedge <popupMenu.offsetWidth)
    {
     popupMenu.style.left = document.body.scrollLeft + event.clientX - popupMenu.offsetWidth;
    }
    else
    {
     popupMenu.style.left = document.body.scrollLeft + event.clientX;
    }
    if (bottomedge <popupMenu.offsetHeight)
    {
     popupMenu.style.top = document.body.scrollTop + event.clientY - popupMenu.offsetHeight;
    }
    else
    {
     popupMenu.style.top = document.body.scrollTop + event.clientY;
    }
    popupMenu.style.visibility = "visible";
    return false;
   } 
   
  </script>
 </body>
</HTML>
-----------------------------------------------------------------------------
服務(wù)器端選擇一節(jié)點(diǎn)下所有子節(jié)點(diǎn)(先選擇再CHECK,麻煩)
private void TreeView1_Check(object sender, Microsoft.Web.UI.WebControls.TreeViewClickEventArgs e)
  {
   Microsoft.Web.UI.WebControls.TreeNode node=TreeView1.GetNodeFromIndex(TreeView1.SelectedNodeIndex.ToString());
   //connE.Alert(node.NodeData.ToString(),Page);
   SetAllNodeData(node.Nodes);
  }

  private void  SetAllNodeData(TreeNodeCollection tnc)
  { 
   
   foreach(TreeNode node in tnc)
   {
    if(node.Nodes.Count!=0)
    {
     SetAllNodeData(node.Nodes);
    }
    if (node.Checked)
    {
     node.Checked = false;
    }
    else
    {
     node.Checked = true;
    }
 
   }
  }

Microsfot.Web.UI.WebControls.TreeView JavaScript控制方法研究
http://caidaoli.cnblogs.com/archive/2005/02/23/108317.html?Pending=true#Post

  1. 被選擇的節(jié)點(diǎn)的索引:
    tree.selectedNodeIndex

  2. 被單擊的節(jié)點(diǎn)的索引:
    tree.clickedNodeIndex

  3. 獲取一個(gè)節(jié)點(diǎn):
    tree.getTreeNode(nodeIndex)

  4. 在根節(jié)點(diǎn)下增加一個(gè)子節(jié)點(diǎn):
    var tree = document.all[‘TreeView1‘];
    var node = tree.createTreeNode() ;
    tree.add(node);
    node.setAttribute( "text", "aaaa");

  5. 在當(dāng)前節(jié)點(diǎn)下增加一個(gè)子節(jié)點(diǎn):
    var tree = document.all[‘TreeView1‘];
    var node = tree.createTreeNode() ;
    var parentNode = tree.getTreeNode( tree.clickedNodeIndex);
    parentNode.add(node);
    node.setAttribute( "text", "aaaa");

  6. 通過(guò)XML文件來(lái)增加子節(jié)點(diǎn):
    node.setAttribute("NavigateUrl","xxx");
    node.databind();
  7. 動(dòng)態(tài)增加子節(jié)點(diǎn)后自動(dòng)展開(kāi):
    node.setAttribute(‘expanded‘, ‘true‘);//MS提供的HTC中需要修改一個(gè)地方,否則就會(huì)產(chǎn)生一個(gè)異常
  8. 獲取節(jié)點(diǎn)的屬性:
    node.getAttribute("xxx")
  9. 設(shè)置節(jié)點(diǎn)的屬性 :
    node.setAttribute(‘xxx‘, ‘xxxx‘);
    1. 常用屬性列表:
    1. 屬性
    含義
    CheckBox True False 是否有選擇框
    checked True False 選擇框是否被選中
    Expanded True False 是否展開(kāi)
    ImageURL   正常狀態(tài)下左邊的圖標(biāo)
    SelectedImageUrl   當(dāng)節(jié)點(diǎn)被選擇時(shí)左邊的圖標(biāo)
    ExpandedImageUrl   當(dāng)節(jié)點(diǎn)被展開(kāi)后左邊的圖標(biāo)
    Target   目標(biāo)框架
    navigateurl   目標(biāo)URL
    type   節(jié)點(diǎn)的類(lèi)型
    childtype   子節(jié)點(diǎn)的類(lèi)型
    Text   節(jié)點(diǎn)顯示的文本
    innerText    
    innerHTML    
    defaultstyle   默認(rèn)的風(fēng)格
    hoverstyle   當(dāng)鼠標(biāo)移到節(jié)點(diǎn)的上面時(shí)的風(fēng)格
    selectedstyle   當(dāng)節(jié)點(diǎn)被選擇時(shí)的風(fēng)格
    treenodesrc    
    1. 獲取父節(jié)點(diǎn):
      node.getParent()
    2. 獲取子節(jié)點(diǎn):
      node.getChildren()
    3. 判斷節(jié)點(diǎn)是否有子節(jié)點(diǎn)
      node.getChildren().length > 0
    4. 響應(yīng)onselectedindexchange事件:
      var tree = document.all["tvMain"];
      tree.attachEvent("onselectedindexchange", SelectedIndexChange);

  • posted on 2006-09-28 15:57 yyf 閱讀(510) 評(píng)論(3)  編輯  收藏 所屬分類(lèi): C#1.0、ASP.NET(1.X)技術(shù)(轉(zhuǎn)載)
    360docimg_536_
    #1樓 

    評(píng)論

    #1樓  2007-03-28 17:13 wei [未注冊(cè)用戶]
    我是一個(gè)新手,想設(shè)計(jì)一個(gè)網(wǎng)站,用ASP.net+VB, 頁(yè)面左邊是一個(gè)TREEVIEW,用來(lái)顯示幾個(gè)人名,右邊是一個(gè)IMG,用來(lái)顯示人物圖片的。當(dāng)點(diǎn)擊左邊的人名時(shí),右邊顯示該人的詳細(xì)資料。但是用了幾 天,都無(wú)法取得響應(yīng)用戶點(diǎn)擊的方法,請(qǐng)求如何用。急急急
    Protected Sub TreeView1_BeforeSelect(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TreeView1.BeforeSelect
    Select Case e.Text
    Case "郭行"
    Image2.ImageUrl = "~/pic/pic_gx.jpg"
    ( ...........)
    case "張東亮"
          Image2.ImageUrl = "~/pic/pic_zdl.jpg"

    End Select


    End Sub
      回復(fù)  引用  查看    

    #2樓  2007-03-28 17:56 wei [未注冊(cè)用戶]
    我是一個(gè)新手,想設(shè)計(jì)一個(gè)網(wǎng)站,用ASP.net+VB, 頁(yè)面左邊是一個(gè)TREEVIEW,用來(lái)顯示幾個(gè)人名,右邊

    是一個(gè)IMG,用來(lái)顯示人物圖片的。當(dāng)點(diǎn)擊左邊的人名時(shí),右邊顯示該人的詳細(xì)資料。但是用了幾天,都

    無(wú)法取得響應(yīng)用戶點(diǎn)擊的方法,請(qǐng)求如何用。急急急
    以下段編譯總是出錯(cuò)?。。?!
    Protected Sub TreeView1_BeforeSelect(ByVal sender As System.Object, ByVal e As

    System.EventArgs) Handles TreeView1.BeforeSelect
    Select Case e.Text
    Case "郭行"
    Image2.ImageUrl = "~/pic/pic_gx.jpg"
    ( ...........)
    case "張東亮"
          Image2.ImageUrl = "~/pic/pic_zdl.jpg"

    End Select


    End Sub

      回復(fù)  引用  查看    

    #3樓  2007-04-10 14:49 yyf919 [未注冊(cè)用戶]
    如果你用的是微軟的TreeView,那么你要讓TreeView的可以回發(fā)的屬性設(shè)置設(shè)置為T(mén)rue,然后在后臺(tái)才能捕獲到客戶端的點(diǎn)擊事件。(僅供參考)
      回復(fù)  引用  查看    
    本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
    打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
    猜你喜歡
    類(lèi)似文章
    C#生成無(wú)限級(jí)別菜單 treeview綁定數(shù)據(jù)庫(kù) 實(shí)踐成果
    ASP.NET TreeView樹(shù)型菜單操作實(shí)例(代碼調(diào)試通過(guò)) - mdl821120的...
    Asp.Net中使用TreeView連接數(shù)據(jù)庫(kù)動(dòng)態(tài)加載節(jié)點(diǎn)問(wèn)題
    采用遞歸算法為T(mén)reeView控件加載節(jié)點(diǎn)(節(jié)點(diǎn)信息保存于SqlServer) ASP.Net相...
    TreeView綁定產(chǎn)品信息
    數(shù)據(jù)庫(kù)驅(qū)動(dòng)的asp.net treeview
    更多類(lèi)似文章 >>
    生活服務(wù)
    分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
    綁定賬號(hào)成功
    后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
    如果VIP功能使用有故障,
    可點(diǎn)擊這里聯(lián)系客服!

    聯(lián)系客服