jqgrid treeReader
时间: 2023-09-15 13:22:51 浏览: 199
`jqGrid` 是一个基于 `jQuery` 的表格插件,`treeReader` 是 `jqGrid` 中用于解析树形数据的一个参数配置。具体来说,`treeReader` 可以配置表格中每一行数据的父子关系,使得表格可以以树形结构展示。
以下是 `treeReader` 的详细配置参数:
- `level_field`: 表示每一行数据在树形结构中的层级,一般为数字类型,例如 `level_field: "level"`。
- `parent_id_field`: 表示每一行数据的父节点 ID,一般为字符串类型,例如 `parent_id_field: "parent"`。
- `leaf_field`: 表示每一行数据是否为叶子节点,一般为布尔类型,例如 `leaf_field: "isLeaf"`。
- `expanded_field`: 表示每一行数据是否展开,一般为布尔类型,例如 `expanded_field: "expanded"`。
- `loaded`: 表示数据是否已经加载完毕,一般为布尔类型,例如 `loaded: "loaded"`。
根据 `treeReader` 的配置,`jqGrid` 会自动根据每一行数据的父子关系,生成树形结构并展示在表格中。同时,`jqGrid` 也提供了诸如 `expandNode`、`collapseNode`、`getNodeParent`、`getNodeChildren` 等方法,方便开发者对树形结构进行操作。
希望这些信息能够帮助到你。
相关问题
jqgrid treeReader 详细api
jqGrid 提供了一个名为 `treeReader` 的选项,用于设置如何解析树形结构的数据。该选项支持以下属性:
- `level_field`: 指定每个节点的层级字段名。默认值为 `"level"`。
- `parent_id_field`: 指定每个节点的父节点 ID 字段名。默认值为 `"parent"`。
- `leaf_field`: 指定每个节点是否为叶子节点的字段名。默认值为 `"isLeaf"`。
- `expanded_field`: 指定每个节点是否展开的字段名。默认值为 `"expanded"`。
- `loaded`: 指定是否需要延迟加载子节点。默认值为 `false`。
- `icon_field`: 指定每个节点的图标字段名。默认值为 `"icon"`。
- `leaf_icon`: 指定叶子节点的图标。默认值为 `"ui-icon-document"`。
- `expanded_icon`: 指定展开节点的图标。默认值为 `"ui-icon-triangle-1-se"`。
- `collapsed_icon`: 指定折叠节点的图标。默认值为 `"ui-icon-triangle-1-e"`。
使用 `treeReader` 选项时,需要设置 `treeGrid` 选项为 `true`。示例代码如下:
```javascript
$("#grid").jqGrid({
url: "data.json",
datatype: "json",
treeGrid: true,
treeGridModel: "adjacency",
colNames: ["ID", "Name", "Level"],
colModel: [
{ name: "id", width: 50 },
{ name: "name", width: 200 },
{ name: "level", width: 100 }
],
treeReader: {
level_field: "level",
parent_id_field: "parent",
leaf_field: "isLeaf",
expanded_field: "expanded"
}
});
```
上述代码中,设置了 `treeReader` 选项,并指定了解析树形数据所需的字段名。同时,设置了 `treeGridModel` 选项为 `"adjacency"`,表示节点之间使用邻接表方式进行关联。
GetTreeData 详细代码 符合 jqgrid treeReader 要求
好的,以下是一个 GetTreeData 方法的示例代码,该方法返回一个符合 jqGrid TreeReader 要求的 JSON 字符串:
```
[WebMethod]
public static string GetTreeData()
{
// 模拟树形结构数据
List<TreeData> treeData = new List<TreeData>();
treeData.Add(new TreeData() { id = 1, name = "Node 1", parent_id = null, level = 0 });
treeData.Add(new TreeData() { id = 2, name = "Node 2", parent_id = 1, level = 1 });
treeData.Add(new TreeData() { id = 3, name = "Node 3", parent_id = 1, level = 1 });
treeData.Add(new TreeData() { id = 4, name = "Node 4", parent_id = 2, level = 2 });
treeData.Add(new TreeData() { id = 5, name = "Node 5", parent_id = 2, level = 2 });
treeData.Add(new TreeData() { id = 6, name = "Node 6", parent_id = 3, level = 2 });
treeData.Add(new TreeData() { id = 7, name = "Node 7", parent_id = 3, level = 2 });
// 将树形结构数据转换为符合 jqGrid TreeReader 要求的 JSON 字符串并返回
StringBuilder jsonBuilder = new StringBuilder();
jsonBuilder.Append("{\"page\":1,\"total\":1,\"records\":7,\"rows\":[");
for (int i = 0; i < treeData.Count; i++)
{
TreeData data = treeData[i];
jsonBuilder.Append("{\"id\":\"" + data.id + "\",");
jsonBuilder.Append("\"name\":\"" + data.name + "\",");
jsonBuilder.Append("\"parent\":\"" + (data.parent_id.HasValue ? data.parent_id.Value.ToString() : "") + "\",");
jsonBuilder.Append("\"level\":\"" + data.level + "\",");
jsonBuilder.Append("\"isLeaf\":\"" + (treeData.Count(d => d.parent_id == data.id) == 0 ? "true" : "false") + "\"}");
if (i < treeData.Count - 1)
{
jsonBuilder.Append(",");
}
}
jsonBuilder.Append("]}");
return jsonBuilder.ToString();
}
public class TreeData
{
public int id { get; set; }
public string name { get; set; }
public int? parent_id { get; set; }
public int level { get; set; }
}
```
在这个示例中,我们使用了一个名为 TreeData 的简单类来表示树形结构数据的每个节点。在 GetTreeData 方法中,我们使用 List<TreeData> 类型的变量来模拟树形结构数据,并将其转换为符合 jqGrid TreeReader 要求的 JSON 格式的字符串返回。请注意,我们使用 StringBuilder 类来构建 JSON 字符串,以便更容易地控制其格式。我们还在 TreeData 类中添加了一个 level 属性,以便在 JSON 字符串中指定每个节点的层级。
阅读全文