2008-11-12 46 views
5

我發現如何將asp:Menu綁定到XML。我已經找到了如何將一個asp:Menu綁定到一個站點地圖(這真的將它綁定到XML)。如何將asp:Menu綁定到數據庫?ASP.NET 2.0:如何將asp:Menu綁定到SqlDataSource?

.NET Framework提供多個數據源:

我想使用一個表示來自SQL Server表的數據。該數據被存儲在標準hierarchical格式,每個人都使用:

NodeID ParentNodeID Caption  Url 
======== ============== =========  ================= 
{3234... {3632...  stackoverflow http://stackov... 
{3632... (null)   Questions  ~/questions.aspx 
{3233... (null)   Tags   ~/tags.aspx 
{3235... {3632...  google   http://www.goo... 

和查詢返回的所有行會:

SELECT * FROM Nodes 

什麼是微軟打算讓我用的祕法將數據搗成asp:Menu?


更新:有上aspalliance.com好文章:Building a Database Driven Hierarchical Menu using ASP.NET 2.0。不幸的是它描述瞭如何執行XML數據綁定;而我對數據庫綁定感興趣。

+1

該文章描述了一個技巧:該方法獲取數據並將其作爲XML公開。 – splattne 2008-11-13 10:01:59

+2

是的,它的確如此。此評論必須至少包含10個字符。 – 2008-11-13 14:30:23

回答

4

菜單不支持綁定到SqlDataSource的,因爲它是一個HierarchicalDataBoundControl - 只分級數據源的支持。你應該實現你自己的HierarchicalDataSourceControl。以here爲例。或者,您可以創建自定義站點地圖提供程序並使用SiteMapDataSource,如演示here。最後,您可以使用可以綁定到SqlDataSource的a 3'rd party control

10

在aspalliance.com上有一篇很好的文章:Building a Database Driven Hierarchical Menu using ASP.NET 2.0。每一步都有解釋和很好的說明。 「

」在本文中,Michael演示瞭如何使用ASP.NET 2.0創建數據庫驅動的分層菜單,只需幾行代碼即可完成這是必須閱讀的教程,適合需要專業菜單且功能強大的所有人靈活簡單的設計。「

的可能是代碼:

protected void LoadData() 
{ 
    DataSet ds = new DataSet(); 
    string connStr = YOUR_CONNECTION_STRING_HERE; 
    using(SqlConnection conn = newSqlConnection(connStr)) 
    { 
     string sql = "Select NodeID, Caption, Url, ParentID from Menu"; 
     SqlDataAdapter da = newSqlDataAdapter(sql, conn); 
     da.Fill(ds); 
     da.Dispose(); 
    } 
    ds.DataSetName = "Menus"; 
    ds.Tables[0].TableName = "Menu"; 
    DataRelation relation = newDataRelation("ParentChild", 
    ds.Tables["Menu"].Columns["NodeID"], 
    ds.Tables["Menu"].Columns["ParentID"], true); 

    relation.Nested = true; 
    ds.Relations.Add(relation); 

    xmlDataSource.Data = ds.GetXml(); 
} 
+0

我看到了,它使用XML進行綁定 - 我在詢問數據庫綁定。 – 2008-11-12 19:40:25

相關問題