2009-04-22 4 views

Répondre

6

Oui, c'est certainement possible. La façon dont nous le faisons est d'ajouter une coutume « IsPhantom » attribut aux nœuds que nous ne voulons pas indiqué dans le plan du site (et dans divers autres endroits):

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

Ensuite, dans le contrôle du plan du site, utilisez la code suivant pour supprimer les nœuds qui ont 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

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

Si vous avez besoin de mieux faire cela et de fournir plus de flexibilité, je vous conseille d'implémenter votre propre SiteMapProvider. Vous pouvez ensuite avoir une propriété ShowInNavigation pour chaque nœud de sitemap et être en mesure de le définir lors de la construction de votre sitemap.

+0

Fondamentalement, je veux montrer 3 éléments de menu ie. Utilisateurs Utilisateur Creare Je souhaite inclure "Modifier l'utilisateur" dans le sitemap mais pas dans TreeView. – ntombela

+0

Je ne comprends toujours pas ce que vous voulez. – Slavo