2009-04-22 28 views
0

私は全てのノードでSiteMapを持っています。私はナビゲーションのためにSiteMapにリンクされているTreeViewコントロールを使用しています。今私はTreeViewに表示される特定のノードを非表示にしたいと思います。これは可能ですか?TreeViewコントロールでASP.NET SiteMapノードを非表示

答えて

6

はい、間違いありません。使用し、サイトマップの制御に続いて

<siteMapNode url="~/Welcome.aspx" title="Welcome" description="" isPhantom="true" /> 

:我々はそれを行う方法は、我々は、サイトマップに示されている(そして、あまりにも他のさまざまな場所で)したくないノードにカスタム「IsPhantom」属性を追加することです"IsPhantom"属性を持つノードを削除するコードを次に示します。

protected void Page_Load(object sender, EventArgs e) 
{ 
    TreeView1.TreeNodeDataBound += new TreeNodeEventHandler(TreeView1_TreeNodeDataBound);    
    SiteMapSource.Provider = this.CurrentProvider; 
} 

protected void TreeView1_TreeNodeDataBound(object sender, TreeNodeEventArgs e) 
{ 
    SiteMapNode thisMapNode = (SiteMapNode)e.Node.DataItem; 
    TreeNode parentTreeNode = e.Node.Parent; 

    if (thisMapNode["isPhantom"] != null && thisMapNode["isPhantom"].ToLower().Equals(bool.TrueString.ToLower()) && parentTreeNode != null) 
     parentTreeNode.ChildNodes.Remove(e.Node); 
} 
0

どの基準に基づいていますか?特定の単一ノードのみを非表示にする場合は、TreeViewのNodeDataBoundイベントにサブスクライブし、アイテム全体(ノード)をVisible = falseに設定します。

これをより適切なやり方で柔軟性を高める必要がある場合は、独自のSiteMapProviderを実装することをお勧めします。次に、各サイトマップノードのプロパティSh​​owInNavigationを持つことができ、サイトマップを構築するときに設定することができます。

+0

基本的に私は3つのメニュー項目を表示したいと思います。 ユーザー クレアユーザー 「ユーザーの編集」をサイトマップに含めるが、ツリービューには含めない。 – ntombela

+0

私はまだあなたが望むものを理解していません。 – Slavo

関連する問題