2009-06-30 9 views
0

Durch das Hinzufügen eines benutzerdefinierten Handlers zum SiteMapResolve-Ereignis kann ich Sitemap-URLs im laufenden Betrieb durch eine von mir definierte Logik aktualisieren.Äquivalenter Effekt von benutzerdefiniertem SiteMapResolve für SiteMapDataSource

Dies ist in Ordnung für SiteMapPath-Steuerelemente, die diese SiteMapResolve-Funktionalität zu verwenden scheinen ... jedoch möchte ich ein ähnliches Ergebnis für ein asp.net-Menüsteuerelement erreichen, das eine SiteMapDataSource verwendet. Das Ändern von Knoten mit dem SiteMapResolve-Handler hat keine Auswirkungen.

Kann mir jemand in die richtige Richtung zeigen? cheers: D

edit: Source Ich habe alles unnötig entfernt und bin links mit dem folgenden - ich muß etwas Missverständnis mit der Struktur des menuItemCollecton zu tun, aber es ist immer leer.

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

Danke Muhammad, ich habe einen einfachen Quellcode hinzugefügt, um das Problem zu demonstrieren, das ich habe. –

Antwort

0

Vielen Dank für Ihre Zeiger Muhammad, aber ich denke, dass ich das Problem geknackt haben.

Ich denke, die MenuItemCollection sieht nur auf statisch definierten Elemente (dh innerhalb des Codes des Menüs) wheras ich in eine XML-Datenquelle bin verknüpft - so Mohammeds Lösung funktioniert nicht

ich das Problem gelöst haben indem ich meinen Code in das menu_MenuItemDataBound-Ereignis setze - und die gewünschten Ergebnisse erhalte.

Danke für die Hilfe!

+0

ja, du bist absolutlt richtig, ich habe dein Beispiel überprüft und das gleiche gefunden ......... Gut GLÜCK :) –