/ / Ausblenden von ASP.NET SiteMap-Knoten im TreeView-Steuerelement - asp.net, Baumansicht, Sitemap

ASP.NET SiteMap-Knoten in TreeView-Steuerelement ausblenden - asp.net, Treeview, Sitemap

Ich habe eine SiteMap mit allen meinen Knoten. Ich verwende ein TreeView-Steuerelement, das zur Navigation mit der SiteMap verknüpft ist. Jetzt möchte ich bestimmte Knoten vor der Anzeige in der TreeView ausblenden. Kann ich das tun?

Antworten:

6 für die Antwort № 1

Ja, das ist definitiv möglich. Wir machen es, indem wir den Knoten, die wir nicht in der Sitemap anzeigen möchten (und an verschiedenen anderen Stellen), ein benutzerdefiniertes "IsPhantom" -Attribut hinzufügen:

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

Verwenden Sie dann im Sitemap-Steuerelement den folgenden Code, um Knoten mit dem Attribut "IsPhantom" zu entfernen:

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 für die Antwort № 2

Nach welchen Kriterien? Wenn Sie nur einzelne Knoten ausblenden möchten, abonnieren Sie das NodeDataBound-Ereignis der TreeView und setzen Sie das gesamte Element (Knoten) auf Visible = false.

Wenn Sie dies auf eine bessere Art und Weise tun müssenUm mehr Flexibilität zu bieten, würde ich Ihnen raten, Ihren eigenen SiteMapProvider zu implementieren. Dann können Sie für jeden Sitemap-Knoten eine Eigenschaft ShowInNavigation haben, die Sie beim Erstellen Ihrer Sitemap festlegen können.