2009-06-30 68 views
0

通過向SiteMapResolve事件添加自定義處理程序,我可以通過我定義的一些邏輯動態更新站點地圖url。自定義SiteMapResolve for SiteMapDataSource的等效效果

這對SiteMapPath控件來說沒問題,它似乎使用了這個SiteMapResolve功能......但是我想爲使用SiteMapDataSource的asp.net菜單控件獲得類似的結果。使用SiteMapResolve處理程序更改節點不起任何作用。

任何人都可以指向正確的方向嗎? 歡呼:d

編輯:源代碼 我已經去除了不必要的一切,並留下了下面我 - 我一定是誤解的東西做的menuItemCollecton的結構,但它總是空的。

的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

感謝Muhammad,我已經添加了一些簡單的源代碼來演示我擁有的問題。 – 2009-06-30 15:42:54

回答

0

謝謝你的指針穆罕默德,但我想我已經破解了問題。

我猜menuItemCollection僅着眼於靜態定義的項目wheras我鏈接到一個XML數據源(在菜單的代碼在IE中) - 穆罕默德這樣的解決方案不起作用

我已經解決了這個問題通過將我的代碼放入menu_MenuItemDataBound事件 - 並獲得我想要的結果。

感謝您的幫助!

+0

是的,你是絕對正確的,我檢查了你的例子,發現相同.........好運氣:) – 2009-07-01 06:06:13