我发现了如何将asp:Menu绑定到XML.我已经找到了如何将asp:Menu绑定到站点地图(这实际上是将它绑定到XML).如何将asp:Menu绑定到数据库?
.NET Framework提供了多个数据源:
HierarchicalDataSourceControl
的XmlDataSource
的SiteMapDataSource
DataSourceControl
的SqlDataSource
的AccessDataSource
使用LinqDataSource
我想使用一个表示SQL Server表中的数据.数据以每个人使用的标准分层格式存储:
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上有一篇很好的文章:使用ASP.NET 2.0构建数据库驱动的分层菜单.不幸的是,它描述了如何执行XML数据绑定; 而我对数据库绑定感兴趣.
aspalliance.com上有一篇很好的文章:使用ASP.NET 2.0构建数据库驱动的分层菜单.每个步骤都有解释并很好地说明.
"在本文中,迈克尔演示了如何使用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(); }