SqlServer无限级树形构建

DECLARE @Level INT=3

;WITH cte_parent(CategoryID,CategoryName,ParentCategoryID,Level)
AS
(
    SELECT category_id,category_name,parent_category_id,1 AS Level
    FROM TianShenLogistic.dbo.ProductCategory WITH(NOLOCK)
	WHERE category_id IN
	(
		SELECT category_id 
		FROM TianShenLogistic.dbo.ProductCategory 
		WHERE parent_category_id=0
	)
    UNION ALL
    SELECT b.category_id,b.category_name,b.parent_category_id,a.Level+1 AS Level
    FROM TianShenLogistic.dbo.ProductCategory b
    INNER JOIN cte_parent a
    ON a.CategoryID = b.parent_category_id
)

SELECT 
	CategoryID AS value,
	CategoryName as label,
	ParentCategoryID As parentId,
	Level
FROM cte_parent WHERE Level <[email protected];
public static List<LogisticsCategoryTreeEntity> GetLogisticsCategoryByParent(int? level)
        {
            if (level < 1) return null;

            var dataResult = CategoryDA.GetLogisticsCategoryByParent(level);
            var firstlevel = dataResult.Where(d => d.level == 1).ToList();
            BuildCategory(dataResult, firstlevel);
            return firstlevel;
        }

        private static void BuildCategory(List<LogisticsCategoryTreeEntity> allCategoryList, List<LogisticsCategoryTreeEntity> categoryList)
        {
            foreach (var category in categoryList)
            {
                var subCategoryList = allCategoryList.Where(c => c.parentId == category.value).ToList();
                if (subCategoryList.Count > 0)
                {
                    if (category.children == null) category.children = new List<LogisticsCategoryTreeEntity>();
                    category.children.AddRange(subCategoryList);
                    BuildCategory(allCategoryList, category.children);
                }
            }
        }
时间: 2024-11-05 18:20:19

SqlServer无限级树形构建的相关文章

利用多叉树实现Ext JS中的无限级树形菜单(一种构建多级有序树形结构JSON的方法)

一.问题研究的背景和意义 目前在Web应用程序开发领域,Ext JS框架已经逐渐被广泛使用,它是富客户端开发中出类拔萃的框架之一.在Ext的UI控件中,树形控件无疑是最为常用的控件之一,它用来实现树形结构的菜单.TreeNode用来实现静态的树形菜单,AsyncTreeNode用来实现动态的异步加载树形菜单,后者最为常用,它通过接收服务器端返回来的JSON格式的数据,动态生成树形菜单节点.动态生成树有两种思路:一种是一次性生成全部树节点,另一种是逐级加载树节点(利用AJAX,每次点击节点时查询下

一张表保存一个无限级树形目录

一张表保存一个无限级树形目录: /****** Object: Table [dbo].[TreeMenue] Script Date: 08/20/2014 18:03:00 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[TreeMenue]( [ID] [int] IDENTITY(1,1) NOT NULL, [MenueName] [v

DropDownList中显示无限级树形结构

效果图: 数据库表: DirID:目录的ID,ParentID:目录的父路径ID,Name:目录的名字主要代码: using System;using System.Collections;using System.Configuration;using System.Data;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlContr

jquery,tree无限级树形菜单+简单实用案例

jquery,tree无限级树形菜单+简单实用案例 我在项目中用到产品类别的树形.各种地方都要用. 我就封装起来,方便以后调用. 记录下来,希望给新手们提供帮助.要记得导入jquery.js  tree.js 哦 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib prefix="c" uri=&quo

JQUERY实现的小巧简洁的无限级树形菜单

JQUERY实现的小巧简洁的无限级树形菜单,可用于后台或前台侧栏菜单!兼容性也比较好. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <

js实现无限级树形导航列表

<html><head><title>js实现的无限级树形下拉导航列表 </title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><style type="text/css">     *{ margin:0; padding:0;    list-style:none;}    

sqlserver实现树形结构递归查询(无限极分类)

SQL Server 2005开始,我们可以直接通过CTE来支持递归查询,CTE即公用表表达式 百度百科 公用表表达式(CTE),是一个在查询中定义的临时命名结果集将在from子句中使用它.每个CTE仅被定义一次(但在其作用域内可以被引用任意次),并且在该查询生存期间将一直生存.可以使用CTE来执行递归操作.创建的语法是: with <name of you cte>(<column names>) as( <actual query> ) select * from

Web应用程序开发,基于Ajax技术的JavaScript树形控件

感谢http://www.cnblogs.com/dgrew/p/3181769.html#undefined 在Web应用程序开发领域,基于Ajax技术的JavaScript树形控件已经被广泛使用,它用来在Html页面上展现具有层次结构的数据项. 目前市场上常见的JavaScript框架及组件库中均包含自己的树形控件,例如jQuery.Dojo.YUI.Ext JS等,还有一些独立的树形控件,例如dhtmlxTree等,这些树形控件完美的解决了层次数据的展示问题. 展示离不开数据,树形控件主要

bootstrap treegrid 实现树形表格结构

前言 :最近的项目中需要实现树形表格功能,由于前端框架用的是bootstrap,但是bootstrapTable没有这个功能所以就找了一个前端的treegrid第三方组件进行了封装.现在把这个封装的组件贴出来 大家共同讨论进步. 1 效果图 2 组件下载地址 链接: https://pan.baidu.com/s/1R8jIGXimeJwUcL7WyqZjDA 密码: ud96 3 组件的使用 3.1 在页面中引入如下的文件 <link href="~/Content/bootstrap/