/ / Nascondere i nodi ASP.NET SiteMap nel controllo TreeView - asp.net, treeview, sitemap

Nascondere i nodi ASP.NET SiteMap nel controllo TreeView - asp.net, treeview, sitemap

Ho un SiteMap con tutti i miei nodi. Sto usando un controllo TreeView che è collegato a SiteMap per la navigazione. Ora vorrei nascondere alcuni nodi dall'apparire sul TreeView. È possibile farlo?

risposte:

6 per risposta № 1

Sì, è sicuramente possibile: il modo in cui lo facciamo è aggiungere un attributo "IsPhantom" personalizzato ai nodi che non vogliamo mostrare nella mappa del sito (e anche in altri posti):

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

Quindi, nel controllo Sitemap, utilizzare il seguente codice per rimuovere i nodi che hanno l'attributo "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 per risposta № 2

In base a quali criteri? Se si desidera nascondere solo singoli nodi specifici, sottoscrivere l'evento NodeDataBound di TreeView e impostare l'intero elemento (nodo) su Visibile = falso.

Se hai bisogno di farlo in un modo migliore efornire maggiore flessibilità, ti consiglierei di implementare il tuo SiteMapProvider. Quindi puoi avere una proprietà ShowInNavigation per ogni nodo della Sitemap, e sarebbe in grado di impostarla durante la costruzione della tua Sitemap.