ASP.NET 2.0:如何将 asp:Menu 绑定到 SqlDataSource?

发布于 2024-07-08 10:56:08 字数 2083 浏览 5 评论 0原文

我找到了如何将 asp:Menu 绑定到 XML。 我已经找到了如何将 asp:Menu 绑定到站点地图(这实际上是将其绑定到 XML)。 如何将 asp:Menu 绑定到数据库?

.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 上有一篇很好的文章:使用 ASP.NET 构建数据库驱动的分层菜单2.0。 不幸的是,它描述了如何执行 XML 数据绑定; 虽然我对数据库绑定感兴趣。

i've found how to bind an asp:Menu to XML. i've found how to bind an asp:Menu to a site map (which is really binding it to XML). How do you bind an asp:Menu to a database?

The .NET Framework provides multiple data sources:

i want to use one that represents data from an SQL Server table. The data is stored in the standard hierarchical format that everyone uses:

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...

And the query to return all the rows would be:

SELECT * FROM Nodes

What is the secret method that Microsoft intended me to use to mash that data into an asp:Menu?


Update: There is a good article on aspalliance.com: Building a Database Driven Hierarchical Menu using ASP.NET 2.0. Unfortunatly it describes how to perform XML data binding; while i'm interested in database binding.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦中的蝴蝶 2024-07-15 10:56:08

aspalliance.com 上有一篇很好的文章:使用 ASP.NET 2.0 构建数据库驱动的分层菜单< /a>. 每个步骤都有解释并有很好的说明。

“在本文中,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();
}

There is a good article on aspalliance.com: Building a Database Driven Hierarchical Menu using ASP.NET 2.0. Each step is explained and nicely illustrated.

"In this article, Michael demonstrates how to create a database driven hierarchical menu with only a few lines of code using ASP.NET 2.0. This is a must read tutorial for everyone who needs a professional menu that is powerful and flexible with simplistic design."

The code for could be:

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();
}
花落人断肠 2024-07-15 10:56:08

该菜单不支持绑定到 SqlDataSource,因为它是 HierarchicalDataBoundControl - 仅支持分层数据源。 您应该实现自己的 HierarchicalDataSourceControl。 请查看此处查看示例。 或者,您可以创建自定义站点地图提供程序并使用 SiteMapDataSource,如此处。 最后,您可以使用第三方控件 可以绑定到 SqlDataSource。

The menu does not support binding to SqlDataSource because it is a HierarchicalDataBoundControl - only hierarchical datasources are supported. You should implement your own HierarchicalDataSourceControl. Check here for an example. Alternatively you could create a custom sitemap provider and use the SiteMapDataSource as demonstrated here. Finally you can use a 3'rd party control which can bind to SqlDataSource.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文