/ / Masquage des nœuds ASP.NET SiteMap dans le contrôle TreeView - asp.net, arborescence, plan du site

Masquage des nœuds ASP.NET SiteMap dans le contrôle TreeView - asp.net, arborescence, plan du site

J'ai un plan du site avec tous mes nœuds. J'utilise un contrôle TreeView qui est lié à SiteMap pour la navigation. J'aimerais maintenant masquer certains nœuds dans TreeView. Est-il possible de le faire?

Réponses:

6 pour la réponse № 1

Oui, c’est tout à fait possible. Pour ce faire, nous ajoutons un attribut personnalisé "IsPhantom" aux nœuds que nous ne souhaitons pas afficher dans le plan du site (et à d’autres endroits également):

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

Ensuite, dans le contrôle sitemap, utilisez le code suivant pour supprimer les nœuds dotés de l'attribut "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 pour la réponse № 2

Sur quels critères? Si vous souhaitez uniquement masquer des nœuds spécifiques, abonnez-vous à l'événement NodeDataBound de TreeView et définissez l'élément entier (nœud) sur Visible = false.

Si vous avez besoin de le faire mieux etPour plus de flexibilité, je vous conseillerais de mettre en place votre propre SiteMapProvider. Ensuite, vous pouvez avoir une propriété ShowInNavigation pour chaque nœud de plan de site, et vous pourrez le définir lors de la construction de votre plan de site.