加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 用于在自联接表中显示嵌套s中的无限类别树的逻辑

发布时间:2020-12-16 03:33:05 所属栏目:asp.Net 来源:网络整理
导读:请帮我解决我的大问题. 在我的在线购物项目中,我创建了一个动态类别列表(具有无限级别深度),在具有自联接的DB中的单个表中实现. 架构如下: alt text http://aspalliance.com/ArticleFiles/822/image002.gif 更新 我想使用JQuery插件制作多级菜单栏.此插件使
请帮我解决我的大问题.
在我的在线购物项目中,我创建了一个动态类别列表(具有无限级别深度),在具有自联接的DB中的单个表中实现.
架构如下: alt text http://aspalliance.com/ArticleFiles/822/image002.gif

更新
我想使用JQuery插件制作多级菜单栏.此插件使用< ul>和< li>元素所以我应该将DB表转换为< ul>和< li>.结果应该是这样的:

<ul>
  <li>Clothing 1
    <ul>
      <li>Trousers 2
        <ul>
          <li>Mens trousers 3</li>
          <li>Ladies trousers 3</li>
        </ul>
      </li> 
      <li>Jackets 2</li>
      <li>Shirts 2</li>
      <li>Shoes
        <ul>
          <li>Mens shoes 3
            <ul>
              <li>Mens formal shoes 4</li>
              <li>Mens casual shoes 4</li>
            </ul>
          </li>
          <li>Kids shoes 3</li>
          <li>Ladies shoes 3</li>
        </ul>
      </li>
    </ul>
   </li>
  <li>Cars 1
   <ul>
     <li>Small cars 2</i>
   </ul>
  </li>
</ul>

我可以使用嵌套数据控件(如转发器控件),但是你知道,通过这个解决方案,我可以实现一个具有非无限分层树结构的列表.
请帮我!任何建议?我用谷歌搜索网络,但找不到合适的方式.我使用ASP.net 3.5和LINQ.
什么是最好的方法?

解决方法

使用此递归方法

private string GenerateUL(IQueryable<Menu> menus)
{
    var sb = new StringBuilder();

    sb.AppendLine("<ul>");
    foreach (var menu in menus)
    {
        if (menu.Menus.Any())
        {
            sb.AppendLine("<li>" + menu.Text);
            sb.Append(GenerateUL(menu.Menus.AsQueryable()));
            sb.AppendLine("</li>");
        }
        else
            sb.AppendLine("<li>" + menu.Text + "</li>");
    }
    sb.AppendLine("</ul>");

    return sb.ToString();
}

像这样

DataClasses1DataContext context = new DataClasses1DataContext();
var s = GenerateUL(context.Menus.Where(m => m.ParentID == null));
Response.Write(s);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读