天堂国产午夜亚洲专区-少妇人妻综合久久蜜臀-国产成人户外露出视频在线-国产91传媒一区二区三区

在ASP.NET中開(kāi)發(fā)樹(shù)狀結(jié)構(gòu)

發(fā)布時(shí)間:2014-07-29 21:03

在網(wǎng)頁(yè)中用樹(shù)狀結(jié)構(gòu)顯示數(shù)據(jù)既清晰又簡(jiǎn)單,用戶非常需要。本文從實(shí)際應(yīng)用的角度,介紹了在ASP.NET中使用TreeView控件來(lái)創(chuàng)建樹(shù)狀結(jié)構(gòu)的幾種具體方法,可以方便地建立靜、動(dòng)態(tài)樹(shù)狀結(jié)構(gòu),較好地解決了樹(shù)狀結(jié)構(gòu)在生成無(wú)限層次不定數(shù)量節(jié)點(diǎn)時(shí)非常困難而且容易出錯(cuò)的問(wèn)題。

一、引言
在網(wǎng)頁(yè)開(kāi)發(fā)工具ASP.NET的應(yīng)用中,用戶經(jīng)常希望用樹(shù)狀控件來(lái)顯示分類或?qū)哟螖?shù)據(jù),這樣既簡(jiǎn)單又直觀,但是ASP.NET本身沒(méi)有提供此控件。當(dāng)然程序員可以用ImageButton和Label等組成的用戶控件和XML、XSL語(yǔ)言自己進(jìn)行編寫(xiě),它們可以顯示有限層次少量節(jié)點(diǎn)的樹(shù)狀,但要生成無(wú)限層次不定數(shù)量的節(jié)點(diǎn)時(shí)就難以實(shí)現(xiàn)并且非常容易出錯(cuò)。
作者通過(guò)對(duì)Microsoft下TreeView控件大量的實(shí)際應(yīng)用,可以非常方便地實(shí)現(xiàn)任何類型的樹(shù)狀結(jié)構(gòu),較好地解決了上述問(wèn)題。

二、安裝 TreeView控件、導(dǎo)入命名空間
    在你的Web程序使用TreeView控件之前,首先必須下載Internet Explorer WebBrower controls到你的開(kāi)發(fā)機(jī)器上,然后導(dǎo)入命名空間?稍L問(wèn)以下網(wǎng)址下載:
下載后,再根據(jù)它的幫助文檔進(jìn)行一些必要的設(shè)置。
    在成功下載并設(shè)置了之后,就可以開(kāi)始使用TreeView控件。記。涸诿總(gè)使用它的程序頁(yè)面的開(kāi)頭都要導(dǎo)入它的命名空間:
  <%@ Import namespace="Microsoft.Web.UI.WebControls" %>
 TagPrefix="mytree" NameSpace="Microsoft.Web.UI.WebContro-ls" Assembly="Microsoft.Web.UI..WebControls,Version=1.0.2.226,Culture=neu-tral,PublicKeyToken=31bf3856ad364e35" %>

三、三種方式添加節(jié)點(diǎn),創(chuàng)建靜態(tài)樹(shù)
    開(kāi)發(fā)樹(shù)狀結(jié)構(gòu)要定義一個(gè)TreeView控件,筆耕論文新浪博客,并向其中添加所需的Treenode節(jié)點(diǎn)。向TreeView控件中添加節(jié)點(diǎn)的方法有三種:
1、      在頁(yè)面中創(chuàng)建:
所有的WebControls都要放在form中,Treeview當(dāng)然也不例外:
<body>
   <form runat="server">
     <mytree:treeview id="treeview1" runat="server">
     <mytree:treenode text="first node"/>
    </mytree:treeview>
    </form>
    </body>
    以上的語(yǔ)句創(chuàng)建了具有一個(gè)節(jié)點(diǎn)first node、名為treeview1的樹(shù)。

2、在程序代碼中創(chuàng)建:
    public void Page_Load(object sender,EventArgs e)
    {
      if(!Page.IsPostBack)
      {
      TreeNode snode=new TreeNode();
      snode.Text="second node";
      treeview1.Nodes.Add(snode);
      }
    }
這樣就為上例的treeview1又創(chuàng)建一個(gè)節(jié)點(diǎn)second node,Add方法是在樹(shù)的最后添加節(jié)點(diǎn)。生成的結(jié)構(gòu)
3、從XML中導(dǎo)入:
在TreeView控件中設(shè)定treenodesrc屬性的值為numtree.xml:
<mytree:treeview id="treeview1" runat="server" treenodesrc="numtree.xml"/>
    說(shuō)明當(dāng)生成樹(shù)狀控件時(shí)會(huì)自動(dòng)從numtree.xml中讀取樹(shù)的節(jié)點(diǎn)內(nèi)容,numtree.xml文件如下:
<?XML version="1.0" encoding="utf-8" ?>
<treenodes>
<treenode text="first node"/>
<treenode text="second node"/>
</treenodes>
生成的樹(shù)狀結(jié)果同上面的例子相同

四、方便快捷地創(chuàng)建動(dòng)態(tài)樹(shù)
以上方法產(chǎn)生的樹(shù)都是靜態(tài)的,即使是從XML中導(dǎo)入,它的節(jié)點(diǎn)數(shù)目也是一定的。當(dāng)我們要將數(shù)據(jù)庫(kù)中的數(shù)據(jù)用樹(shù)狀結(jié)構(gòu)表現(xiàn)出來(lái)時(shí),并不知道這個(gè)樹(shù)的層次和節(jié)點(diǎn)數(shù),就需要在TreeView控件中動(dòng)態(tài)地添加樹(shù)節(jié)點(diǎn)。例如用樹(shù)狀結(jié)構(gòu)表現(xiàn)一個(gè)公司有許多部門(mén),部門(mén)下有員工。部門(mén)的數(shù)據(jù)放在表dept中(包含字段deptid和deptname),部門(mén)和員工的對(duì)應(yīng)關(guān)系放在表deptperson中(包含字段deptid、personid和personname),并且這些字段都是string類型,這兩個(gè)表放在數(shù)據(jù)庫(kù)mydb.mdb中。這里添加節(jié)點(diǎn)的方法也有幾種,在此介紹的方法是在頁(yè)面加載時(shí)生成部門(mén)節(jié)點(diǎn),當(dāng)點(diǎn)擊部門(mén)前的擴(kuò)展圖標(biāo)按鈕后再生成部門(mén)下的人員子節(jié)點(diǎn)。
在頁(yè)面中寫(xiě)入:
<mytree:treeview id="tr1" runat="serve" onexpand="treeview1_Expand"/>
在<script Language="c#" runat="server"></script>中加入如下代碼:
OleDbConnection myconn;
public void Page_Load(Object sender,EventArgs e)
// 在頁(yè)面加載時(shí)生成部門(mén)節(jié)點(diǎn)
{
string strmyconn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Serve-r.MapPath(".")+"..\\DataBase\\mydb.mdb";
myconn=new OleDbConnection(strmyconn);
myconn.Open();
if(!Page.IsPostBack)
{
string strdept="select * from dept";
OleDbCommand mycomm=new OleDbCommand(strdept,myconn)
OleDbDataReader mydr=mycomm.ExecuteReader();
//用DataReader讀取部門(mén)表中的數(shù)據(jù)
while(mydr.Read())
{
TreeNode tmpnode=new TreeNode();
tmpnode.Text=mydr["deptname"].ToString();
tmpnode.NodeData=mydr["deptid"].ToString();
tmpnode.Expandable=ExpandableValue.CheckOnce;
treeview1.Nodes.Add(tmpnode);
}
mydr.Close();
}
}
點(diǎn)擊擴(kuò)展圖標(biāo)按鈕觸發(fā)的事件treeview1_Expand的代碼是:
public void treeview1_Expand(object sender,Microsoft.Web.UI.WebControls.Tr-eeViewClickEventArgs e)
{
TreeNode deptnode=((Microsoft.Web.UI.WebControls.TreeView)sender).Nodes[(int.Par-se(e.Node))];
if(deptnode.Nodes.Count==0)
{
string strperson="select deptperson.personname from deptperson,dept whe-re dept.deptid=deptperson.deptid and dept.deptid='"+deptnode.NodeData.T-oString()+"'";
OleDbCommand mycomm1=new OleDbCommand(strperson,myconn);
OleDbDataReader mydr1=mycomm1.ExecuteReader();
while(mydr1.Read())
{
TreeNode personnode=new TreeNode();
personnode.Text=mydr1["personname"].ToString();
deptnode.Nodes.Add(personnode);
}
mydr1.Close();
}
}
使用同樣的方法和原理,我們可以創(chuàng)建比這更為復(fù)雜的樹(shù)結(jié)構(gòu)。TreeView控件還有許多其他的屬性和事件,象ChildType,SelectedStyle,imageurl和onselectedindexchang等,利用這些屬性不但可以美化樹(shù)狀結(jié)構(gòu)的外觀,而且還可以更好的滿足你的使用要求。

五、結(jié)論:
在上面的使用中,我們可以看出TreeView控件在生成樹(shù)狀結(jié)構(gòu)方面具有強(qiáng)大功能,與其他編寫(xiě)自定義用戶控件和利用XML的方法相比較,它提供的用可擴(kuò)展的樹(shù)狀結(jié)構(gòu)來(lái)顯示層次數(shù)據(jù)方法更加方便、實(shí)用和有效,而且出錯(cuò)率非常低。隨著對(duì)TreeView控件深入的研究,我們也會(huì)不斷地發(fā)現(xiàn)它的更多的有用的方法和功能。
電工高級(jí)技師論文     
 

 



本文編號(hào):6513

資料下載
論文發(fā)表

本文鏈接:http://sikaile.net/kejilunwen/jisuanjikexuelunwen/6513.html


Copyright(c)文論論文網(wǎng)All Rights Reserved | 網(wǎng)站地圖 |

版權(quán)申明:資料由用戶cfba2***提供,本站僅收錄摘要或目錄,作者需要?jiǎng)h除請(qǐng)E-mail郵箱bigeng88@qq.com
夜夜嗨激情五月天精品| 好吊一区二区三区在线看| 欧美一区二区三区99| 高清不卡视频在线观看| 国产老女人性生活视频| 自拍偷女厕所拍偷区亚洲综合| 中文字幕有码视频熟女| 91免费一区二区三区| 在线观看视频日韩成人| 欧美亚洲综合另类色妞| 亚洲一区二区三区免费的视频| 国产一区二区三区口爆在线| 男人和女人草逼免费视频| 国产成人精品久久二区二区| 亚洲第一区二区三区女厕偷拍| 久久热在线视频免费观看| 老司机精品线观看86| 美女激情免费在线观看| 大伊香蕉一区二区三区| 亚洲精品一区二区三区日韩| 日韩成人h视频在线观看| 亚洲国产中文字幕在线观看| 黑鬼糟蹋少妇资源在线观看| 99国产高清不卡视频| 好吊视频有精品永久免费 | 欧美日韩精品久久亚洲区熟妇人| 青青免费操手机在线视频| 国产性色精品福利在线观看| 亚洲精品一区二区三区日韩| 欧美不卡一区二区在线视频| 亚洲第一区欧美日韩在线| 国产超碰在线观看免费| 在线亚洲成人中文字幕高清| 日韩精品综合免费视频| 在线日本不卡一区二区| 手机在线不卡国产视频| 真实偷拍一区二区免费视频| 欧美多人疯狂性战派对| 在线观看国产成人av天堂野外| 欧洲亚洲精品自拍偷拍| 91人妻久久精品一区二区三区 |