首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 母版頁 TreeView 導航連結狀態保持問題

     編輯:關於ASP.NET

母版頁 TreeView 跨頁面選中狀態保持解決方案

問題描述

TreeView 置於母版頁時,點選子頁面連結導航後,TreeView 無法保持展開/選中狀態,總是重置為初始狀態。

解決思路:Session 儲存父節點 + Page_Load 還原

  1. 僅處理兩層節點(父/子),多層需擴展邏輯。
  2. 點選父節點時,將該 TreeNode 存入 Session["treeNode"]。
  3. 點選子節點時,比對其父節點文字與 Session 中節點文字,一致則展開該父節點,其餘摺疊。
  4. 子頁面載入時(!IsPostBack),遍歷 TreeView 節點,依 Session 還原展開狀態。

關鍵屬性:SelectAction

  • TreeNodeSelectAction.Expand:切換展開/摺疊,觸發 TreeNodeExpanded/TreeNodeCollapsed。
  • TreeNodeSelectAction.None:不觸發事件。
  • TreeNodeSelectAction.Select:觸發 SelectedNodeChanged。
  • TreeNodeSelectAction.SelectExpand:選中並展開,觸發 SelectedNodeChanged 與 TreeNodeExpanded。

本範例採用 Expand 搭配對應事件。

母版頁 Page_Load 完整代碼

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        if (Session["treeNode"] != null)
        {
            TreeNode parentNode = Session["treeNode"] as TreeNode;
            foreach (TreeNode tn in this.TreeView1.Nodes)
            {
                if (tn.Text.Trim() == parentNode.Text.Trim())
                    tn.Expand();
                else
                    tn.Collapse();
            }
        }
    }
}

此法簡單有效,無需框架架構,適合中小型專案快速解決母版頁導航狀態保持問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved