国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

ASP.NET母版頁(yè)TreeView導(dǎo)航鏈接問(wèn)題

2019-11-17 04:14:42
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

    最近在網(wǎng)上找一些關(guān)于“asp.net母版頁(yè)TreeView導(dǎo)航鏈接問(wèn)題”相關(guān)資料,很多人都碰到跟我類(lèi)似的問(wèn)題,于是我就抽了點(diǎn)時(shí)間自己調(diào)試一下這個(gè)問(wèn)題了。

      首先描述一下我的問(wèn)題:

      當(dāng)把TreeView控件放到母版頁(yè)時(shí),在做頁(yè)面導(dǎo)航鏈接的時(shí)候,TreeView控件的菜單狀態(tài)一直保持為最初設(shè)置的狀態(tài),并不會(huì)像點(diǎn)擊某個(gè)頁(yè)面跳轉(zhuǎn)后還仍然保持點(diǎn)擊的那個(gè)狀態(tài)。

      最簡(jiǎn)單的方式,當(dāng)然是用框架了。問(wèn)題雖然很容易解決,可我還是想琢磨它一下,于是就寫(xiě)了個(gè)調(diào)試程序來(lái)分享一下。程序比較粗糙,能達(dá)到我想要的效果就可以了,呵呵。 于是,我去MSDN里面查找一下了關(guān)于TreeView控件的相關(guān)資料,然后再結(jié)合自己的思路,終于讓我寫(xiě)出來(lái)了。

     思路:在TreeView控件里面我只設(shè)置了兩個(gè)級(jí)別(級(jí)別增加的話(huà)可能要另外再處理)。當(dāng)我們點(diǎn)擊某一個(gè)父節(jié)點(diǎn)的時(shí)候,把當(dāng)前父節(jié)點(diǎn)用session會(huì)話(huà)存儲(chǔ)下來(lái),點(diǎn)擊子節(jié)點(diǎn)時(shí)判斷該節(jié)點(diǎn)的父節(jié)點(diǎn)是否和SESSION的父節(jié)點(diǎn)一致,若是就將該父節(jié)點(diǎn)的子級(jí)展開(kāi),反之跳過(guò)。(最好用foreach遍歷該導(dǎo)航菜單)

     在程序當(dāng)中最關(guān)鍵的還是要了解一下TreeView控件的SelectAction屬性,這個(gè)屬性會(huì)涉及到一些控件相關(guān)事件,如下所示:

     1、TreeNodeSelectAction.Expand:

        使節(jié)點(diǎn)在展開(kāi)和折疊狀態(tài)之間切換。相應(yīng)地引發(fā) TreeNodeExpanded 事件或 TreeNodeCollapsed 事件。

     2、TreeNodeSelectAction.None:

        在選定節(jié)點(diǎn)時(shí)不引發(fā)任何事件

     3、TreeNodeSelectAction.Select:

        在選定節(jié)點(diǎn)時(shí)引發(fā) SelectedNodeChanged 事件

     4、TreeNodeSelectAction.SelectExpand:

        選擇節(jié)點(diǎn)時(shí)引發(fā) SelectedNodeChanged 和 TreeNodeExpanded 事件。節(jié)點(diǎn)只會(huì)展開(kāi),不會(huì)折疊

     在我的DEMO里面我是應(yīng)用了第一個(gè)和所關(guān)聯(lián)的兩個(gè)事件進(jìn)行編寫(xiě)的,代碼如下:

在母版頁(yè)內(nèi)觸發(fā)以下三個(gè)事件:

 

母版頁(yè)P(yáng)ageLoad事件
 1 PRotected void Page_Load(object sender, EventArgs e)
 2     {
 3         if (!IsPostBack)
 4         {
 5             //驗(yàn)證當(dāng)前Session中是否有節(jié)點(diǎn)
 6             if (Session["treeNode"] != null)
 7             {
 8                 TreeNode parentNode = Session["treeNode"] as TreeNode;
 9                 //遍歷TreeView的Nodes集合
10                 foreach (TreeNode tn in this.TreeView1.Nodes)
11                 {
12                     //若循環(huán)節(jié)點(diǎn)的文本與當(dāng)前節(jié)點(diǎn)的文本匹配,展開(kāi)該節(jié)點(diǎn);反之折疊
13                     if (tn.Text.Trim() == parentNode.Text.Trim())
14                     {
15                         tn.Expand();
16                     }
17                     else
18                     {
19                         tn.Collapse();
20                     }
21
22                 }
23             }
24         }
25     }
 

TreeView展開(kāi)事件
 1  protected void TreeView1_TreeNodeExpanded(object sender, TreeNodeEventArgs e)
 2     {   //獲取當(dāng)前節(jié)點(diǎn)
 3         TreeNode currentNode = e.Node;
 4         //驗(yàn)證當(dāng)前Session中是否有節(jié)點(diǎn)
 5         if (Session["treeNode"] != null)
 6         {
 7             TreeNode node = Session["treeNode"] as TreeNode;
 8             //遍歷TreeView的Nodes集合
 9             foreach (TreeNode tn in this.TreeView1.Nodes)
10             {
11                 //若循環(huán)節(jié)點(diǎn)的文本與當(dāng)前節(jié)點(diǎn)的文本不匹配,將其余節(jié)點(diǎn)折疊
12                 if (tn.Text.Trim() != currentNode.Text.Trim())
13                 {
14                     tn.Collapse();
15                 }
16             }
17
18
19         }
20         //存儲(chǔ)當(dāng)前節(jié)點(diǎn)
21         Session["treeNode"] = currentNode;
22     }
 TreeView折疊事件

1  protected void TreeView1_TreeNodeCollapsed(object sender, TreeNodeEventArgs e)
2     {
3         //移除存儲(chǔ)的節(jié)點(diǎn)
4         Session.Remove("treeNode");
5     }
    另外,個(gè)人還有一個(gè)想法就是通過(guò)動(dòng)態(tài)綁定來(lái)實(shí)現(xiàn)多級(jí)的菜單會(huì)更合適點(diǎn),遍歷節(jié)點(diǎn)的時(shí)候,我覺(jué)得還是用它的Value值來(lái)判斷最好,而不是用文本。DEMO里面還有一個(gè)是用框架實(shí)現(xiàn)的,效果一樣。

以上就是解決標(biāo)題問(wèn)題的一個(gè)簡(jiǎn)短DEMO,比較粗糙,望高手有更好的方法可以交流一下,謝謝。


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 灵丘县| 遂平县| 双鸭山市| 衡阳市| 乐清市| 兴宁市| 金华市| 达日县| 灌云县| 江门市| 湘乡市| 康保县| 嵩明县| 灵宝市| 小金县| 茶陵县| 孝义市| 措美县| 南川市| 同江市| 娱乐| 武义县| 拜泉县| 诸城市| 云梦县| 临泽县| 杭锦后旗| 商城县| 安福县| 泰和县| 夹江县| 瑞丽市| 资阳市| 文登市| 平阴县| 哈密市| 威海市| 永丰县| 邵阳县| 泽库县| 华阴市|