jqgrid 4.6 treeReader 怎么用c# 部门表构建符合的数据集合
时间: 2024-03-05 09:51:05 浏览: 131
C# 根据数据库表建立TreeView
4星 · 用户满意度95%
使用jqGrid的treeReader功能,需要将部门表构建成符合要求的JSON数据集合。可以使用以下代码将部门表构建成JSON数据集合:
```csharp
// 部门表
public class Department
{
public int Id { get; set; }
public string Name { get; set; }
public int? ParentId { get; set; }
}
// 获取部门树形结构
public List<Department> GetDepartmentTree(List<Department> departments)
{
var tree = new List<Department>();
var dictionary = new Dictionary<int, Department>();
foreach (var department in departments)
{
if (department.ParentId == null)
{
tree.Add(department);
}
else
{
if (dictionary.ContainsKey(department.ParentId.Value))
{
dictionary[department.ParentId.Value].Children.Add(department);
}
else
{
var parent = departments.Find(d => d.Id == department.ParentId.Value);
parent.Children.Add(department);
dictionary.Add(department.ParentId.Value, parent);
}
}
department.Children = new List<Department>();
}
return tree;
}
// 构建符合要求的JSON数据集合
public JArray GetDepartmentTreeJson(List<Department> departments)
{
var tree = GetDepartmentTree(departments);
var result = new JArray();
foreach (var node in tree)
{
var jsonNode = new JObject();
jsonNode.Add("id", node.Id);
jsonNode.Add("name", node.Name);
jsonNode.Add("parent_id", node.ParentId ?? -1);
if (node.Children.Count > 0)
{
jsonNode.Add("isLeaf", false);
var children = new JArray();
foreach (var child in node.Children)
{
var jsonChild = new JObject();
jsonChild.Add("id", child.Id);
jsonChild.Add("name", child.Name);
jsonChild.Add("parent_id", child.ParentId ?? -1);
jsonChild.Add("isLeaf", true);
children.Add(jsonChild);
}
jsonNode.Add("children", children);
}
else
{
jsonNode.Add("isLeaf", true);
}
result.Add(jsonNode);
}
return result;
}
```
该示例代码中,使用了前面提到的GetDepartmentTree方法将部门列表转换为树形结构。然后使用Newtonsoft.Json库构建JSON数据集合。对于每个节点,需要添加id、name、parent_id、isLeaf和children等属性,其中parent_id为父节点id,isLeaf表示是否为叶子节点,children为子节点列表。如果节点没有子节点,则不需要添加children属性。
最后返回构建好的JSON数据集合,可以在前端使用jqGrid的treeReader功能进行展示。
阅读全文