すべてのノードを含む SiteMap があります。ナビゲーション用に SiteMap にリンクされている TreeView コントロールを使用しています。ここで、特定のノードが TreeView に表示されないようにします。これを行うことは可能ですか?
質問する
8083 次
2 に答える
6
はい、もちろん可能です。その方法は、サイトマップ (および他のさまざまな場所) に表示したくないノードにカスタムの "IsPhantom" 属性を追加することです。
<siteMapNode url="~/Welcome.aspx" title="Welcome" description="" isPhantom="true" />
次に、サイトマップ コントロールで、次のコードを使用して、「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);
}
于 2009-04-22T11:20:52.153 に答える
0
どのような基準に基づいていますか?特定の単一ノードのみを非表示にする場合は、TreeViewのNodeDataBoundイベントをサブスクライブし、アイテム全体(ノード)をVisible=falseに設定します。
これをより良い方法で行い、より柔軟性を提供する必要がある場合は、独自のSiteMapProviderを実装することをお勧めします。次に、サイトマップノードごとにプロパティShowInNavigationを設定し、サイトマップを作成するときにそれを設定できます。
于 2009-04-22T11:00:46.650 に答える