jqgrid 4.6 中 c# List集合 怎么使用自定义 treetable
时间: 2024-03-05 15:50:40 浏览: 166
在 C# 中使用 jqGrid 4.6 自定义 treetable 可以使用以下步骤:
1. 首先,您需要定义一个模型类,用于表示每个行的数据。您需要在模型类中添加一个名为 parent 的属性,以表示父节点。
```csharp
public class MyModel
{
public string Id { get; set; }
public string Name { get; set; }
public string Parent { get; set; }
public bool IsLeaf { get; set; }
public int Level { get; set; }
public bool Expanded { get; set; }
}
```
2. 然后,您需要创建一个 List<MyModel> 对象,用于存储所有的行数据。
```csharp
List<MyModel> data = new List<MyModel>();
```
3. 接下来,您需要使用自定义函数来处理数据和构建树形表格。您可以使用自定义函数来读取数据、计算层级、构建树形表格以及处理展开和折叠等操作。
```csharp
// 读取数据并构建树形表格
public ActionResult MyAction()
{
// your data retrieval code here
List<MyModel> rawData = GetDataFromDatabase();
// build tree data
List<MyModel> treeData = new List<MyModel>();
foreach (MyModel node in rawData)
{
node.Level = 0;
node.IsLeaf = true;
node.Expanded = false;
treeData.Add(node);
foreach (MyModel child in rawData)
{
if (child.Parent == node.Id)
{
child.Level = node.Level + 1;
child.IsLeaf = true;
child.Expanded = false;
treeData.Add(child);
node.IsLeaf = false;
}
}
}
// set parent IDs
foreach (MyModel node in treeData)
{
if (!string.IsNullOrEmpty(node.Parent))
{
node.Parent = treeData.Find(n => n.Id == node.Parent).Id;
}
}
// assign data to grid
return Json(new
{
rows = treeData,
page = 1,
records = treeData.Count,
total = 1
}, JsonRequestBehavior.AllowGet);
}
```
在上面的代码中,我们首先使用 GetDataFromDatabase 函数从数据库中获取原始数据。然后,我们使用一个 foreach 循环来遍历每个节点,计算层级并设置节点的 isLeaf 和 expanded 属性。在处理每个节点时,我们还使用另一个 foreach 循环来查找子节点,并将子节点添加到树形表格的数据中。最后,我们设置每个节点的 parent 属性,使其与父节点的 ID 匹配。
4. 最后,您需要在视图文件中使用 jqGrid 来显示树形表格。
```javascript
$("#myGrid").jqGrid({
url: "/MyController/MyAction",
datatype: "json",
colModel: [
{ name: "Id", index: "Id", hidden: true },
{ name: "Name", index: "Name", width: 150 },
{ name: "Parent", index: "Parent", hidden: true },
{ name: "IsLeaf", index: "IsLeaf", hidden: true },
{ name: "Level", index: "Level", hidden: true },
{ name: "Expanded", index: "Expanded", hidden: true },
],
treeGrid: true,
treeGridModel: "adjacency",
ExpandColumn: "Name",
ExpandColClick: true,
ExpandOnClick: true,
treeIcons: {
plus: "ui-icon-plus",
minus: "ui-icon-minus",
leaf: "ui-icon-document"
},
caption: "My Tree Table Caption"
});
```
在上面的代码中,我们使用 jqGrid 的 url 选项来指定数据源的 URL。然后,我们使用 colModel 选项来定义数据列。接下来,我们使用 treeGrid 和 treeGridModel 选项来启用树形表格功能。最后,我们使用 ExpandColumn、ExpandColClick 和 ExpandOnClick 选项来设置展开和折叠操作的行为。
希望这可以帮助您开始构建自定义 treetable。
阅读全文