2009-06-30 8 views
0

En ajoutant un gestionnaire personnalisé à l'événement SiteMapResolve, je peux mettre à jour les URL de sitemap à la volée, selon une logique que je définis.Effet équivalent de Custom SiteMapResolve pour SiteMapDataSource

Cela est correct pour les contrôles SiteMapPath, qui semblent utiliser cette fonctionnalité SiteMapResolve ... mais je veux obtenir un résultat similaire pour un contrôle de menu asp.net utilisant SiteMapDataSource. La modification des noeuds avec le gestionnaire SiteMapResolve n'a aucun effet.

Quelqu'un pourrait-il me diriger dans la bonne direction? acclamations: D

modifier: sourcecode J'ai enlevé tout inutile et me reste ce qui suit - je dois être mal compris quelque chose à voir avec la structure du menuItemCollecton mais il est toujours vide.

web.sitemap


<?xml version="1.0" encoding="utf-8" ?> 
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > 
<siteMapNode url="default.aspx" title="Homepage" description="Home"> 
    <siteMapNode url="secondpage.aspx" title="Page 2" /> 
</siteMapNode> 
</siteMap> 

default.aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:Menu runat=server ID=menu DataSourceid=dsSiteMap /> 
     <asp:SiteMapDataSource ID="dsSiteMap" runat="server" /> 
     <asp:Label runat=server id=lbMenuCount /> 
    </div> 
    </form> 
</body> 
</html> 

Default.aspx.vb


Partial Class _Default Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
lbMenuCount.text = menu.Items.Count End Sub End Class

+0

Merci Muhammad, j'ai ajouté un code source simple pour montrer le problème que j'ai. –

Répondre

0

Merci pour vos pointeurs Muhammad, mais je pense que je l'ai résolu le problème.

Je suppose que le MenuItemCollection ne porte que sur les éléments statiquement définis (par exemple dans le code du menu) wheras je lien vers un fichier XML source de données - donc la solution de Muhammad ne fonctionne pas

J'ai résolu le problème en plaçant mon code dans l'événement menu_MenuItemDataBound - et j'obtiens les résultats que je veux.

Merci pour toute l'aide!

+0

oui, vous avez absolument raison, j'ai vérifié votre exemple et trouvé la même chose ......... Bonne chance :) –