2009-08-01 130 views
2

我需要從數據庫(具有n級子類別的類別)填充具有可以不斷更改的菜單項的分層結構的ASP.NET菜單控件。從數據庫中填充菜單

有一些方法,我想聽聽哪一個是最有效的。

我有那些記:

  1. 檢索的數據庫中的數據並將其轉換爲xml然後用定製的XSLT文件轉換,並將其綁定到菜單控制
  2. 檢索的數據庫中的數據,並同時通過循環(遞歸),將菜單項和子項插入菜單控件
  3. SQL網站地圖提供程序(感謝Made4Print)
  4. 還有其他的東西嗎?

回答

3

ASP.NET菜單控件可以通過SiteMapDataSource使用.SiteMap文件。

你可以實現你自己的SiteMapProvider,這樣你可以在你的數據庫中擁有你的SiteMap層次結構,並且連接相同的組件,從而使事物更加靈活。

下面是一個例子:http://weblogs.asp.net/scottgu/archive/2006/01/11/435108.aspx

HTH

1

如果你想這樣做,我肯定會推薦選項2,因爲它包含一個小於選項1的轉換級別。如果你已經遍歷菜單項和他們的hiearchies,你也可以建立菜單項和子項直接 - 我沒有看到從繞過XML到XSLT進入菜單結構的巨大優勢,真的。

馬克

PS:選項3(SQL站點地圖提供者)聽起來也像是一個很好的主意,如果該站點地圖結構和選項都配不上你(他們通常應該是)。我可能會先嚐試這個選項,然後從那裏開始。

+0

我唯一關心的是效率,菜單項可以不斷地變化。 菜單項目在父母和其他人之間刪除或移動(與它的孩子) 所以這將需要重建菜單結構。 – markiz 2009-08-01 12:14:47

+0

是的 - 但如果您先將已更改的結構轉換爲XML並將XSLT用於實際菜單結構中,那也是如此 - 我不認爲您通過此路線贏得任何東西。 – 2009-08-01 21:38:27

1

我同意馬克。然後,您可以將所有內容都包裝在服務器控件中以實現可重用性。將所有內容轉換爲XML,然後使用XSLT以某種方式將它「轉換」回來對我來說似乎是一種開銷。