原文:https://www.cnblogs.com/fzz2727551894/p/5501223.html
前端:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<div id="plugins1"></div>
<link href="../jstree/themes/default/style.min.css" rel="stylesheet" />
<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.js"></script>
<script src="../jstree/jstree.min.js"></script>
<link href="../layui-v2.5.5/layui/css/layui.css" rel="stylesheet" />
<script type="text/javascript">
$(function () {
$("#plugins1").jstree({
"checkbox": {
'three_state': true,//父子节点关联,true为关联,false为不关联
'tie_selection': false, //
'whole_node': false,//复选框与节点关联 true 为关联 false为不关联
},
"types": {
'nouser': {
"icon": 'layui-icon layui-icon-ok'
}
},
"plugins": ["checkbox", "types"],//加载插件 checkbox
'core': {
'expand_selected_onload': true,//加载完成后默认展开所有选中节点true为选中 false为不展开
'themes': {
dots: true //取消连接线
},
'data': {
'url': function (node) {
return './Handler4.ashx';
},
'data': function (node) {
return { 'id': node.id };
}
}
}
});
});
</script>
</body>
</html>
后台:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Newtonsoft.Json;
using System.Data;
using System.Data.SqlClient;
namespace WebApplication1.jstree测试
{
public class Handler5 : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "application/json; charset=utf-8";
context.Response.Write(JsonConvert.SerializeObject(GetTree()));
}
public bool IsReusable
{
get
{
return false;
}
}
//获取 tree
public List<TreeNode> GetTree()
{
var dic = CreateDic();
var tree = CreateTree(dic);
return tree;
}
//生成 dic
public Dictionary<int, TreeNode> CreateDic()
{
var table = GetDataTable($"select * from Projects", null);
//生成dictionary
var dic = new Dictionary<int, TreeNode>();
foreach (DataRow row in table.Rows)
{
var model = new TreeNode
{
id = int.Parse(row["Id"].ToString()),
ParentId = int.Parse(row["ParentId"].ToString()),
text = row["ProjectName"].ToString(),
code = row["ProjectCode"].ToString(),
ComponentCode = row["ComponentCode"].ToString()
};
dic.Add(model.id, model);
}
return dic;
}
//生成 tree
public List<TreeNode> CreateTree(Dictionary<int, TreeNode> dic)
{
var list = new List<TreeNode>();
foreach (var pair in dic)
{
var pid = pair.Value.ParentId;
if (pid == 0)
{
list.Add(pair.Value);
continue;
}
if (dic.ContainsKey(pid))
{
var children = (List<TreeNode>)dic[pid].children;
children.Add(pair.Value);
}
}
return list;
}
//获取 DataTable
public DataTable GetDataTable(string sql, params SqlParameter[] param)
{
//string conStr = "data source=.\\sqlexpress;initial catalog=TEST1;user id=sa;password=sa;";
string conStr = "data source=192.168.2.51; initial catalog=BIMManagerDb;user id=sa;password=Sql123456; ";
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection(conStr))
{
using (SqlDataAdapter adapter = new SqlDataAdapter(sql, con))
{
if (param != null)
{
adapter.SelectCommand.Parameters.AddRange(param);
}
adapter.Fill(dt);
}
}
return dt;
}
//对象 tree
public class TreeNode
{
public TreeNode()
{
children = new List<TreeNode>();
}
public int id { get; set; }
public string text { get; set; }
public string code { get; set; }
public string type { get; set; }
public object children { get; set; }
public string ComponentCode { get; set; }
public int ParentId { get; set; }
}
}
}
SQL数据:
USE [TEST1]
GO
/****** Object: Table [dbo].[Projects8] Script Date: 03/12/2020 10:34:22 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Projects8](
[Id] [int] NOT NULL,
[ProjectName] [nvarchar](50) NOT NULL,
[ProjectCode] [nvarchar](max) NULL,
[ParentId] [int] NOT NULL,
[ProjectOrder] [int] NULL,
[IsEnabled] [int] NOT NULL,
[OwnerId] [int] NULL,
[ConstructionId] [int] NULL,
[SupervisionId] [int] NULL,
[ContractId] [int] NULL,
[Level] [int] NULL,
[Quantity] [int] NULL,
[ComponentCode] [nvarchar](max) NULL,
[NComponentCode] [nvarchar](max) NULL,
[TaskStatus] [int] NOT NULL,
[VersionIng] [nvarchar](max) NULL,
[FbxId] [nvarchar](max) NULL,
[Descrption] [nvarchar](max) NULL,
[PileNumber] [nvarchar](max) NULL,
[IsSubunit] [int] NULL,
[BiDSion] [nvarchar](max) NULL,
[ProjectType] [nvarchar](max) NULL,
[EquCode] [nvarchar](max) NULL,
[NextId] [int] NULL,
[MileageNo] [nvarchar](max) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
INSERT [dbo].[Projects8] ([Id], [ProjectName], [ProjectCode], [ParentId], [ProjectOrder], [IsEnabled], [OwnerId], [ConstructionId], [SupervisionId], [ContractId], [Level], [Quantity], [ComponentCode], [NComponentCode], [TaskStatus], [VersionIng], [FbxId], [Descrption], [PileNumber], [IsSubunit], [BiDSion], [ProjectType], [EquCode], [NextId], [MileageNo]) VALUES (510321, N'兰州中通道', N'01', 0, 1, 0, NULL, NULL, NULL, NULL, 1, NULL, N'', NULL, 0, N'0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Projects8] ([Id], [ProjectName], [ProjectCode], [ParentId], [ProjectOrder], [IsEnabled], [OwnerId], [ConstructionId], [SupervisionId], [ContractId], [Level], [Quantity], [ComponentCode], [NComponentCode], [TaskStatus], [VersionIng], [FbxId], [Descrption], [PileNumber], [IsSubunit], [BiDSion], [ProjectType], [EquCode], [NextId], [MileageNo]) VALUES (510322, N'一分部', N'01.01', 510321, 1, 0, NULL, NULL, NULL, NULL, 2, NULL, N'', NULL, 0, N'0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Projects8] ([Id], [ProjectName], [ProjectCode], [ParentId], [ProjectOrder], [IsEnabled], [OwnerId], [ConstructionId], [SupervisionId], [ContractId], [Level], [Quantity], [ComponentCode], [NComponentCode], [TaskStatus], [VersionIng], [FbxId], [Descrption], [PileNumber], [IsSubunit], [BiDSion], [ProjectType], [EquCode], [NextId], [MileageNo]) VALUES (510323, N'二分部', N'01.02', 510321, 2, 0, NULL, NULL, NULL, NULL, 2, NULL, N'', NULL, 0, N'0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Projects8] ([Id], [ProjectName], [ProjectCode], [ParentId], [ProjectOrder], [IsEnabled], [OwnerId], [ConstructionId], [SupervisionId], [ContractId], [Level], [Quantity], [ComponentCode], [NComponentCode], [TaskStatus], [VersionIng], [FbxId], [Descrption], [PileNumber], [IsSubunit], [BiDSion], [ProjectType], [EquCode], [NextId], [MileageNo]) VALUES (510324, N'三分部', N'01.03', 510321, 3, 0, NULL, NULL, NULL, NULL, 2, NULL, N'', NULL, 0, N'0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Projects8] ([Id], [ProjectName], [ProjectCode], [ParentId], [ProjectOrder], [IsEnabled], [OwnerId], [ConstructionId], [SupervisionId], [ContractId], [Level], [Quantity], [ComponentCode], [NComponentCode], [TaskStatus], [VersionIng], [FbxId], [Descrption], [PileNumber], [IsSubunit], [BiDSion], [ProjectType], [EquCode], [NextId], [MileageNo]) VALUES (510325, N'四分部', N'01.04', 510321, 4, 0, NULL, NULL, NULL, NULL, 2, NULL, N'', NULL, 0, N'0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Projects8] ([Id], [ProjectName], [ProjectCode], [ParentId], [ProjectOrder], [IsEnabled], [OwnerId], [ConstructionId], [SupervisionId], [ContractId], [Level], [Quantity], [ComponentCode], [NComponentCode], [TaskStatus], [VersionIng], [FbxId], [Descrption], [PileNumber], [IsSubunit], [BiDSion], [ProjectType], [EquCode], [NextId], [MileageNo]) VALUES (510326, N'五分部', N'01.05', 510321, 5, 0, NULL, NULL, NULL, NULL, 2, NULL, N'', NULL, 0, N'0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Projects8] ([Id], [ProjectName], [ProjectCode], [ParentId], [ProjectOrder], [IsEnabled], [OwnerId], [ConstructionId], [SupervisionId], [ContractId], [Level], [Quantity], [ComponentCode], [NComponentCode], [TaskStatus], [VersionIng], [FbxId], [Descrption], [PileNumber], [IsSubunit], [BiDSion], [ProjectType], [EquCode], [NextId], [MileageNo]) VALUES (510327, N'陈家湾大桥右幅', N'01.02.01', 510323, 1, 0, NULL, NULL, NULL, NULL, 3, NULL, N'', N'cjwdq', 0, N'单位工程', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Projects8] ([Id], [ProjectName], [ProjectCode], [ParentId], [ProjectOrder], [IsEnabled], [OwnerId], [ConstructionId], [SupervisionId], [ContractId], [Level], [Quantity], [ComponentCode], [NComponentCode], [TaskStatus], [VersionIng], [FbxId], [Descrption], [PileNumber], [IsSubunit], [BiDSion], [ProjectType], [EquCode], [NextId], [MileageNo]) VALUES (510328, N'0#台基础及下部构造', N'01.02.01.01', 510327, 1, 0, NULL, NULL, NULL, NULL, 4, NULL, N'', N'cjwdq', 0, N'0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Projects8] ([Id], [ProjectName], [ProjectCode], [ParentId], [ProjectOrder], [IsEnabled], [OwnerId], [ConstructionId], [SupervisionId], [ContractId], [Level], [Quantity], [ComponentCode], [NComponentCode], [TaskStatus], [VersionIng], [FbxId], [Descrption], [PileNumber], [IsSubunit], [BiDSion], [ProjectType], [EquCode], [NextId], [MileageNo]) VALUES (510329, N'桩基钢筋加工及安装', N'01.02.01.01.01', 510328, 1, 0, NULL, NULL, NULL, NULL, 5, NULL, N'', N'cjwdq', 0, N'0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Projects8] ([Id], [ProjectName], [ProjectCode], [ParentId], [ProjectOrder], [IsEnabled], [OwnerId], [ConstructionId], [SupervisionId], [ContractId], [Level], [Quantity], [ComponentCode], [NComponentCode], [TaskStatus], [VersionIng], [FbxId], [Descrption], [PileNumber], [IsSubunit], [BiDSion], [ProjectType], [EquCode], [NextId], [MileageNo]) VALUES (510330, N'0a-3桩基钢筋加工及安装', N'01.02.01.01.01.01', 510329, 1, 0, NULL, NULL, NULL, NULL, 6, NULL, N'aec-80427915-000052273', N'cjwdq', 0, N'0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Projects8] ([Id], [ProjectName], [ProjectCode], [ParentId], [ProjectOrder], [IsEnabled], [OwnerId], [ConstructionId], [SupervisionId], [ContractId], [Level], [Quantity], [ComponentCode], [NComponentCode], [TaskStatus], [VersionIng], [FbxId], [Descrption], [PileNumber], [IsSubunit], [BiDSion], [ProjectType], [EquCode], [NextId], [MileageNo]) VALUES (510331, N'0a-4桩基钢筋加工及安装', N'01.02.01.01.01.02', 510329, 2, 0, NULL, NULL, NULL, NULL, 6, NULL, N'aec-80427915-000052278', N'cjwdq', 0, N'0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Projects8] ([Id], [ProjectName], [ProjectCode], [ParentId], [ProjectOrder], [IsEnabled], [OwnerId], [ConstructionId], [SupervisionId], [ContractId], [Level], [Quantity], [ComponentCode], [NComponentCode], [TaskStatus], [VersionIng], [FbxId], [Descrption], [PileNumber], [IsSubunit], [BiDSion], [ProjectType], [EquCode], [NextId], [MileageNo]) VALUES (510332, N'0a-5桩基钢筋加工及安装', N'01.02.01.01.01.03', 510329, 3, 0, NULL, NULL, NULL, NULL, 6, NULL, N'aec-80427915-000052286', N'cjwdq', 0, N'0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Projects8] ([Id], [ProjectName], [ProjectCode], [ParentId], [ProjectOrder], [IsEnabled], [OwnerId], [ConstructionId], [SupervisionId], [ContractId], [Level], [Quantity], [ComponentCode], [NComponentCode], [TaskStatus], [VersionIng], [FbxId], [Descrption], [PileNumber], [IsSubunit], [BiDSion], [ProjectType], [EquCode], [NextId], [MileageNo]) VALUES (510333, N'0b-3桩基钢筋加工及安装', N'01.02.01.01.01.04', 510329, 4, 0, NULL, NULL, NULL, NULL, 6, NULL, N'aec-80427915-000052280', N'cjwdq', 0, N'0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Projects8] ([Id], [ProjectName], [ProjectCode], [ParentId], [ProjectOrder], [IsEnabled], [OwnerId], [ConstructionId], [SupervisionId], [ContractId], [Level], [Quantity], [ComponentCode], [NComponentCode], [TaskStatus], [VersionIng], [FbxId], [Descrption], [PileNumber], [IsSubunit], [BiDSion], [ProjectType], [EquCode], [NextId], [MileageNo]) VALUES (510334, N'0b-4桩基钢筋加工及安装', N'01.02.01.01.01.05', 510329, 5, 0, NULL, NULL, NULL, NULL, 6, NULL, N'aec-80427915-000052284', N'cjwdq', 0, N'0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Projects8] ([Id], [ProjectName], [ProjectCode], [ParentId], [ProjectOrder], [IsEnabled], [OwnerId], [ConstructionId], [SupervisionId], [ContractId], [Level], [Quantity], [ComponentCode], [NComponentCode], [TaskStatus], [VersionIng], [FbxId], [Descrption], [PileNumber], [IsSubunit], [BiDSion], [ProjectType], [EquCode], [NextId], [MileageNo]) VALUES (510335, N'0b-5桩基钢筋加工及安装', N'01.02.01.01.01.06', 510329, 6, 0, NULL, NULL, NULL, NULL, 6, NULL, N'aec-80427915-000052285', N'cjwdq', 0, N'0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Projects8] ([Id], [ProjectName], [ProjectCode], [ParentId], [ProjectOrder], [IsEnabled], [OwnerId], [ConstructionId], [SupervisionId], [ContractId], [Level], [Quantity], [ComponentCode], [NComponentCode], [TaskStatus], [VersionIng], [FbxId], [Descrption], [PileNumber], [IsSubunit], [BiDSion], [ProjectType], [EquCode], [NextId], [MileageNo]) VALUES (510336, N'桩基砼浇筑', N'01.02.01.01.02', 510328, 2, 0, NULL, NULL, NULL, NULL, 5, NULL, N'', N'cjwdq', 0, N'0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Projects8] ([Id], [ProjectName], [ProjectCode], [ParentId], [ProjectOrder], [IsEnabled], [OwnerId], [ConstructionId], [SupervisionId], [ContractId], [Level], [Quantity], [ComponentCode], [NComponentCode], [TaskStatus], [VersionIng], [FbxId], [Descrption], [PileNumber], [IsSubunit], [BiDSion], [ProjectType], [EquCode], [NextId], [MileageNo]) VALUES (510337, N'0a-3桩基砼浇筑', N'01.02.01.01.02.01', 510336, 1, 0, NULL, NULL, NULL, NULL, 6, NULL, N'aec-80427915-000052273', N'cjwdq', 0, N'0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Projects8] ([Id], [ProjectName], [ProjectCode], [ParentId], [ProjectOrder], [IsEnabled], [OwnerId], [ConstructionId], [SupervisionId], [ContractId], [Level], [Quantity], [ComponentCode], [NComponentCode], [TaskStatus], [VersionIng], [FbxId], [Descrption], [PileNumber], [IsSubunit], [BiDSion], [ProjectType], [EquCode], [NextId], [MileageNo]) VALUES (510338, N'0a-4桩基砼浇筑', N'01.02.01.01.02.02', 510336, 2, 0, NULL, NULL, NULL, NULL, 6, NULL, N'aec-80427915-000052278', N'cjwdq', 0, N'0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Projects8] ([Id], [ProjectName], [ProjectCode], [ParentId], [ProjectOrder], [IsEnabled], [OwnerId], [ConstructionId], [SupervisionId], [ContractId], [Level], [Quantity], [ComponentCode], [NComponentCode], [TaskStatus], [VersionIng], [FbxId], [Descrption], [PileNumber], [IsSubunit], [BiDSion], [ProjectType], [EquCode], [NextId], [MileageNo]) VALUES (510339, N'0a-5桩基砼浇筑', N'01.02.01.01.02.03', 510336, 3, 0, NULL, NULL, NULL, NULL, 6, NULL, N'aec-80427915-000052286', N'cjwdq', 0, N'0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Projects8] ([Id], [ProjectName], [ProjectCode], [ParentId], [ProjectOrder], [IsEnabled], [OwnerId], [ConstructionId], [SupervisionId], [ContractId], [Level], [Quantity], [ComponentCode], [NComponentCode], [TaskStatus], [VersionIng], [FbxId], [Descrption], [PileNumber], [IsSubunit], [BiDSion], [ProjectType], [EquCode], [NextId], [MileageNo]) VALUES (510340, N'0b-3桩基砼浇筑', N'01.02.01.01.02.04', 510336, 4, 0, NULL, NULL, NULL, NULL, 6, NULL, N'aec-80427915-000052280', N'cjwdq', 0, N'0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Projects8] ([Id], [ProjectName], [ProjectCode], [ParentId], [ProjectOrder], [IsEnabled], [OwnerId], [ConstructionId], [SupervisionId], [ContractId], [Level], [Quantity], [ComponentCode], [NComponentCode], [TaskStatus], [VersionIng], [FbxId], [Descrption], [PileNumber], [IsSubunit], [BiDSion], [ProjectType], [EquCode], [NextId], [MileageNo]) VALUES (510341, N'0b-4桩基砼浇筑', N'01.02.01.01.02.05', 510336, 5, 0, NULL, NULL, NULL, NULL, 6, NULL, N'aec-80427915-000052284', N'cjwdq', 0, N'0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Projects8] ([Id], [ProjectName], [ProjectCode], [ParentId], [ProjectOrder], [IsEnabled], [OwnerId], [ConstructionId], [SupervisionId], [ContractId], [Level], [Quantity], [ComponentCode], [NComponentCode], [TaskStatus], [VersionIng], [FbxId], [Descrption], [PileNumber], [IsSubunit], [BiDSion], [ProjectType], [EquCode], [NextId], [MileageNo]) VALUES (510342, N'0b-5桩基砼浇筑', N'01.02.01.01.02.06', 510336, 6, 0, NULL, NULL, NULL, NULL, 6, NULL, N'aec-80427915-000052285', N'cjwdq', 0, N'0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)