TreeView 置於母版頁時,點選子頁面連結導航後,TreeView 無法保持展開/選中狀態,總是重置為初始狀態。
TreeNode 存入 Session["treeNode"]。!IsPostBack),遍歷 TreeView 節點,依 Session 還原展開狀態。TreeNodeSelectAction.Expand:切換展開/摺疊,觸發 TreeNodeExpanded/TreeNodeCollapsed。TreeNodeSelectAction.None:不觸發事件。TreeNodeSelectAction.Select:觸發 SelectedNodeChanged。TreeNodeSelectAction.SelectExpand:選中並展開,觸發 SelectedNodeChanged 與 TreeNodeExpanded。本範例採用 Expand 搭配對應事件。
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();
}
}
}
}
此法簡單有效,無需框架架構,適合中小型專案快速解決母版頁導航狀態保持問題。