簡體   English   中英

如何防止我的 treeview 崩潰?

[英]How do I prevent my treeview from collapsing?

我正在使用 ASP.NET 與 C# 2.0 和 Visual Studio 2005。我正在使用母版頁和內容頁。 我在母版頁中有一個 treeview 菜單,當用戶選擇任何菜單項時,我會重定向到該內容頁面。

我的問題是,在用戶導航到內容頁面后,所有樹節點都會刷新並且結構會折疊。 我希望選定的樹節點保持擴展。

有人可以幫幫我嗎?

當您刷新 treeview 時,您想調用 treeView1.ExpandAll();

還為 BeforeCollapse 添加一個事件並將該事件的 Cancel 屬性設置為 true,以防止用戶折疊您的樹節點。

private void treeView1_BeforeCollapse(object sender, TreeViewCancelEventArgs e)
{
    e.Cancel = true;
}

希望這可以幫助。

-傑里米

如果您使用 SiteMapDataSource 控件作為 TreeView 的數據源,這是一個常見的問題,它會由 ASP.NET 自動處理。 在這種情況下,您還沒有提到您的 TreeView 的 Datasource 是什么。

您還沒有提到 TreeView 是否包含鏈接(設置了NavigateUrl屬性)或每次點擊回發的文本項。 如果是前者,那么據我所知,你倒霉了! 這是因為沒有為設置了NavigateUrl的 TreeNode 引發任何選擇事件。 他們只是 function 作為常規超鏈接。

但是,如果是后者,那么您可以嘗試以下步驟:

一個。 處理 TreeView 的SelectedNodeChanged事件。 在此事件處理程序中,檢索SelectedNode.ValuePath屬性的當前值並將其存儲在 ViewState/Session 中。 使用 SelectedNode 的Value有條件地將頁面重定向到映射到它的 URL。

類似於以下內容:

protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e) 
{ 
  TreeNode selNode = TreeView1.SelectedNode; 
  string pathToNode = selNode.ValuePath; 
  Session.Add("SelPath", pathToNode); 

  switch (selNode.Value) 
  { 
  //Redirect to URL accordingly. 
  } 
} 

灣。 在隨后加載母版頁面(您重定向到的頁面)時,檢索先前設置的ValuePath的值並找到先前的 Selected 節點並Expand它。

類似於以下內容:

protected void Page_Load(object sender, EventArgs e) 
{ 
  if (Page.IsPostBack)
  { 
    string pathToNode = (string)Session("SelPath"); 
    Session.Remove("SelPath"); 
    TreeNode selNode = TreeView1.FindNode(pathToNode); 
    if (selNode != null) 
    { 
      selNode.Expand(); 
    } 
  } 
} 

請注意,我沒有機會測試代碼,所以這主要是假設性的。

嘗試使用 OnTreeNodeDataBound 事件和 treeView.SelectedNode 屬性

此外,可能想檢查如何/何時將 TreeView 綁定到它的數據源。 您可能會在 IsPostBack 上重新綁定它,這將重新渲染樹。

TreeView 應在 PostBack 上維護其節點。

即使您使用的是母版頁,一旦用戶導航到內容頁面,它也會呈現為新的/不同的頁面。 由於母版頁,加載了相同的 treeview 但不是相同的實例。 您將需要存儲和加載展開的節點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM