Loading...
Loading...
Compare original and translation side by side
childMappingidMappingchildMappingidMappingRefer to Properties & Configuration, Events & Lifecycle, and Classes & Enums Reference files for complete API lookup.
<!-- ✅ REQUIRED - childMapping matches data property name exactly -->
<ejs-treegrid id="TreeGrid" dataSource="@ViewBag.data" childMapping="Children"
treeColumnIndex="1" allowPaging="true">
<e-treegrid-columns>
<e-treegrid-column field="TaskId" headerText="Task ID"
isPrimaryKey="true" textAlign="Right" width="95"></e-treegrid-column>
<e-treegrid-column field="TaskName" headerText="Task Name" width="220"></e-treegrid-column>
<e-treegrid-column field="Duration" headerText="Duration" textAlign="Right" width="100"></e-treegrid-column>
</e-treegrid-columns>
</ejs-treegrid>
<!-- ❌ WRONG - No childMapping = No expansion possible -->
<ejs-treegrid id="TreeGrid2" dataSource="@ViewBag.data">
<!-- Missing childMapping & treeColumnIndex - Won't expand! -->
</ejs-treegrid>public class TreeGridItem
{
public int TaskId { get; set; }
public string TaskName { get; set; }
public int Duration { get; set; }
public List<TreeGridItem> Children { get; set; } // Must match childMapping="Children"
}
// Sample data
var data = new List<TreeGridItem>
{
new TreeGridItem
{
TaskId = 1,
TaskName = "Planning",
Duration = 5,
Children = new List<TreeGridItem> // ✅ CORRECT - nested Children property
{
new TreeGridItem { TaskId = 2, TaskName = "Identify Site", Duration = 2 },
new TreeGridItem { TaskId = 3, TaskName = "Perform Test", Duration = 3 }
}
}
};<!-- Use idMapping + parentIdMapping instead of childMapping -->
<ejs-treegrid id="TreeGrid" dataSource="@ViewBag.flatData"
idMapping="TaskId" parentIdMapping="ParentId" treeColumnIndex="1">
...
</ejs-treegrid>var flatData = new List<TreeGridItem>
{
new TreeGridItem { TaskId = 1, TaskName = "Planning", ParentId = null },
new TreeGridItem { TaskId = 2, TaskName = "Identify Site", ParentId = 1 },
new TreeGridItem { TaskId = 3, TaskName = "Perform Test", ParentId = 1 }
};<!-- ✅ 必填项 - childMapping必须与数据属性名完全匹配 -->
<ejs-treegrid id="TreeGrid" dataSource="@ViewBag.data" childMapping="Children"
treeColumnIndex="1" allowPaging="true">
<e-treegrid-columns>
<e-treegrid-column field="TaskId" headerText="Task ID"
isPrimaryKey="true" textAlign="Right" width="95"></e-treegrid-column>
<e-treegrid-column field="TaskName" headerText="Task Name" width="220"></e-treegrid-column>
<e-treegrid-column field="Duration" headerText="Duration" textAlign="Right" width="100"></e-treegrid-column>
</e-treegrid-columns>
</ejs-treegrid>
<!-- ❌ 错误示例 - 无childMapping则无法展开 -->
<ejs-treegrid id="TreeGrid2" dataSource="@ViewBag.data">
<!-- 缺少childMapping和treeColumnIndex - 无法展开! -->
</ejs-treegrid>public class TreeGridItem
{
public int TaskId { get; set; }
public string TaskName { get; set; }
public int Duration { get; set; }
public List<TreeGridItem> Children { get; set; } // 必须与childMapping="Children"匹配
}
// 示例数据
var data = new List<TreeGridItem>
{
new TreeGridItem
{
TaskId = 1,
TaskName = "Planning",
Duration = 5,
Children = new List<TreeGridItem> // ✅ 正确 - 嵌套的Children属性
{
new TreeGridItem { TaskId = 2, TaskName = "Identify Site", Duration = 2 },
new TreeGridItem { TaskId = 3, TaskName = "Perform Test", Duration = 3 }
}
}
};<!-- 使用idMapping + parentIdMapping替代childMapping -->
<ejs-treegrid id="TreeGrid" dataSource="@ViewBag.flatData"
idMapping="TaskId" parentIdMapping="ParentId" treeColumnIndex="1">
...
</ejs-treegrid>var flatData = new List<TreeGridItem>
{
new TreeGridItem { TaskId = 1, TaskName = "Planning", ParentId = null },
new TreeGridItem { TaskId = 2, TaskName = "Identify Site", ParentId = 1 },
new TreeGridItem { TaskId = 3, TaskName = "Perform Test", ParentId = 1 }
};public class TreeGridItem
{
public int TaskId { get; set; } // ✅ int type
public string TaskName { get; set; } // ✅ string type
public DateTime StartDate { get; set; } // ✅ DateTime for date columns
public decimal Price { get; set; } // ✅ decimal for currency
}
var data = new List<TreeGridItem>
{
new TreeGridItem
{
TaskId = 1, // int, not string "1"
TaskName = "Planning",
StartDate = new DateTime(2024, 3, 15), // DateTime, not "03/15/2024"
Price = 1500.50m // decimal, not string "1500.50"
}
};<ejs-treegrid id="TreeGrid" dataSource="@ViewBag.data" childMapping="Children">
<e-treegrid-columns>
<!-- field "TaskId" is int, so type="number" -->
<e-treegrid-column field="TaskId" headerText="Task ID"
type="number" textAlign="Right" width="95"></e-treegrid-column>
<!-- field "TaskName" is string, type="string" (default) -->
<e-treegrid-column field="TaskName" headerText="Task Name" width="220"></e-treegrid-column>
<!-- field "StartDate" is DateTime, so type="date" with format -->
<e-treegrid-column field="StartDate" headerText="Start Date"
type="date" format="yMd" textAlign="Right" width="115"></e-treegrid-column>
<!-- field "Price" is decimal, type="number" with currency format -->
<e-treegrid-column field="Price" headerText="Price"
type="number" format="c2" textAlign="Right" width="100"></e-treegrid-column>
</e-treegrid-columns>
</ejs-treegrid>// Bad model - mixing string where types should be specific
var badData = new List<TreeGridItem>
{
new TreeGridItem
{
TaskId = "1", // ❌ String instead of int
StartDate = "02/03/2024" // ❌ String instead of DateTime
}
};
// Result: Sorting fails, formatting doesn't work, expand/collapse issuespublic class TreeGridItem
{
public int TaskId { get; set; } // ✅ int类型
public string TaskName { get; set; } // ✅ string类型
public DateTime StartDate { get; set; } // ✅ DateTime用于日期列
public decimal Price { get; set; } // ✅ decimal用于货币
}
var data = new List<TreeGridItem>
{
new TreeGridItem
{
TaskId = 1, // int类型,而非字符串"1"
TaskName = "Planning",
StartDate = new DateTime(2024, 3, 15), // DateTime类型,而非字符串"03/15/2024"
Price = 1500.50m // decimal类型,而非字符串"1500.50"
}
};<ejs-treegrid id="TreeGrid" dataSource="@ViewBag.data" childMapping="Children">
<e-treegrid-columns>
<!-- 字段"TaskId"是int类型,所以type="number" -->
<e-treegrid-column field="TaskId" headerText="Task ID"
type="number" textAlign="Right" width="95"></e-treegrid-column>
<!-- 字段"TaskName"是string类型,type="string"(默认值) -->
<e-treegrid-column field="TaskName" headerText="Task Name" width="220"></e-treegrid-column>
<!-- 字段"StartDate"是DateTime类型,所以type="date"并设置格式 -->
<e-treegrid-column field="StartDate" headerText="Start Date"
type="date" format="yMd" textAlign="Right" width="115"></e-treegrid-column>
<!-- 字段"Price"是decimal类型,type="number"并设置货币格式 -->
<e-treegrid-column field="Price" headerText="Price"
type="number" format="c2" textAlign="Right" width="100"></e-treegrid-column>
</e-treegrid-columns>
</ejs-treegrid>// 错误模型 - 在应使用特定类型的地方混用字符串
var badData = new List<TreeGridItem>
{
new TreeGridItem
{
TaskId = "1", // ❌ 字符串而非int
StartDate = "02/03/2024" // ❌ 字符串而非DateTime
}
};
// 结果:排序失败、格式化无效、展开/折叠异常Syncfusion.EJ2.AspNet.Core_ViewImports.cshtml_Layout.cshtml<ejs-treegrid>childMappingtreeColumnIndex<e-treegrid-columns>actionFailureSyncfusion.EJ2.AspNet.Core_ViewImports.cshtml_Layout.cshtml<ejs-treegrid>childMappingtreeColumnIndex<e-treegrid-columns>actionFailurechildMappingidMappingparentIdMappingDataManagerexpandStateMappingchildMappingidMappingparentIdMappingDataManagerexpandStateMappingfieldheaderTexttextAlignwidthtypeformattreeColumnIndexshowCheckboxautoCheckHierarchyvalueAccessorshowColumnMenufieldheaderTexttextAlignwidthtypeformattreeColumnIndexshowCheckboxautoCheckHierarchyvalueAccessorshowColumnMenuallowSortinge-treegrid-sortsettingsallowSorting: falseactionBeginactionCompletesortColumnclearSortingallowSortinge-treegrid-sortsettingsallowSorting: falseactionBeginactionCompletesortColumnclearSortingallowFilteringallowFilteringe-treegrid-editSettingsisPrimaryKeynewRowPositione-treegrid-editSettingsisPrimaryKeynewRowPositionallowPaginge-treegrid-pagesettingspageSizepageSizeModedataBoundallowPaginge-treegrid-pagesettingspageSizepageSizeModedataBounde-treegrid-selectionsettingscheckboxModee-treegrid-selectionsettingscheckboxModeshowChildSummaryfooterTemplateshowChildSummaryfooterTemplaterowDataBound.e-altrowallowRowDragAndDroprowDataBound.e-altrowallowRowDragAndDropqueryCellInfoallowTextWrapqueryCellInfoallowTextWrapallowExcelExportexcelExport()allowExcelExportexcelExport()allowPdfExportpdfExport()allowPdfExportpdfExport()allowPrintingprintMode: 'CurrentPage'allowPrintingprintMode: 'CurrentPage'enableAdaptiveUIenableAdaptiveUIfrozenRowsfrozenColumnsisFrozenfrozenRowsfrozenColumnsisFrozenenableImmutableMode="true"enableImmutableMode="true"localelocaleenablePersistenceenablePersistence_ViewImports.cshtml@addTagHelper *, Syncfusion.EJ2_Layout.cshtml<head><!-- Syncfusion ASP.NET Core controls styles -->
<link rel="stylesheet" href="~/ej2/ej2version/fluent2.css" />
<!-- Syncfusion ASP.NET Core controls scripts -->
<script src="~/ej2/ej2version/dist/ej2.min.js"></script>_Layout.cshtml<body><ejs-scripts></ejs-scripts>Index.cshtml@{
var data = TreeGridItems.GetTreeData();
}
<ejs-treegrid id="TreeGrid" dataSource="@data" childMapping="Children"
treeColumnIndex="1" allowSorting="true" allowFiltering="true" allowPaging="true">
<e-treegrid-pagesettings pageSize="5"></e-treegrid-pagesettings>
<e-treegrid-columns>
<e-treegrid-column field="TaskId" headerText="Task ID" isPrimaryKey="true"
textAlign="Right" width="95"></e-treegrid-column>
<e-treegrid-column field="TaskName" headerText="Task Name" width="220"></e-treegrid-column>
<e-treegrid-column field="StartDate" headerText="Start Date"
textAlign="Right" format="yMd" type="date" width="115"></e-treegrid-column>
<e-treegrid-column field="Duration" headerText="Duration"
textAlign="Right" width="100"></e-treegrid-column>
</e-treegrid-columns>
</ejs-treegrid>Index.cshtml.cspublic class TreeGridItems
{
public int TaskId { get; set; }
public string TaskName { get; set; }
public DateTime StartDate { get; set; }
public int Duration { get; set; }
public List<TreeGridItems> Children { get; set; }
public static List<TreeGridItems> GetTreeData()
{
return new List<TreeGridItems>
{
new TreeGridItems
{
TaskId = 1, TaskName = "Planning",
StartDate = new DateTime(2021, 6, 7), Duration = 5,
Children = new List<TreeGridItems>
{
new TreeGridItems { TaskId = 2, TaskName = "Plan timeline", StartDate = new DateTime(2021, 6, 7), Duration = 5 },
new TreeGridItems { TaskId = 3, TaskName = "Plan budget", StartDate = new DateTime(2021, 6, 7), Duration = 5 }
}
}
};
}
}_ViewImports.cshtml@addTagHelper *, Syncfusion.EJ2_Layout.cshtml<head><!-- Syncfusion ASP.NET Core控件样式 -->
<link rel="stylesheet" href="~/ej2/ej2version/fluent2.css" />
<!-- Syncfusion ASP.NET Core控件脚本 -->
<script src="~/ej2/ej2version/dist/ej2.min.js"></script>_Layout.cshtml<body><ejs-scripts></ejs-scripts>Index.cshtml@{
var data = TreeGridItems.GetTreeData();
}
<ejs-treegrid id="TreeGrid" dataSource="@data" childMapping="Children"
treeColumnIndex="1" allowSorting="true" allowFiltering="true" allowPaging="true">
<e-treegrid-pagesettings pageSize="5"></e-treegrid-pagesettings>
<e-treegrid-columns>
<e-treegrid-column field="TaskId" headerText="Task ID" isPrimaryKey="true"
textAlign="Right" width="95"></e-treegrid-column>
<e-treegrid-column field="TaskName" headerText="Task Name" width="220"></e-treegrid-column>
<e-treegrid-column field="StartDate" headerText="Start Date"
textAlign="Right" format="yMd" type="date" width="115"></e-treegrid-column>
<e-treegrid-column field="Duration" headerText="Duration"
textAlign="Right" width="100"></e-treegrid-column>
</e-treegrid-columns>
</ejs-treegrid>Index.cshtml.cspublic class TreeGridItems
{
public int TaskId { get; set; }
public string TaskName { get; set; }
public DateTime StartDate { get; set; }
public int Duration { get; set; }
public List<TreeGridItems> Children { get; set; }
public static List<TreeGridItems> GetTreeData()
{
return new List<TreeGridItems>
{
new TreeGridItems
{
TaskId = 1, TaskName = "Planning",
StartDate = new DateTime(2021, 6, 7), Duration = 5,
Children = new List<TreeGridItems>
{
new TreeGridItems { TaskId = 2, TaskName = "Plan timeline", StartDate = new DateTime(2021, 6, 7), Duration = 5 },
new TreeGridItems { TaskId = 3, TaskName = "Plan budget", StartDate = new DateTime(2021, 6, 7), Duration = 5 }
}
}
};
}
}childMappingidMappingchildMappingidMappingchildMappingChildrenchildMapping="Children"idMappingparentIdMappingidMapping="TaskId" parentIdMapping="ParentId"childMappingChildrenchildMapping="Children"idMappingparentIdMappingidMapping="TaskId" parentIdMapping="ParentId"<ejs-treegrid id="TreeGrid" dataSource="@data" childMapping="Children"
treeColumnIndex="1" toolbar="@(new List<string>() {"Add","Edit","Delete","Update","Cancel"})">
<e-treegrid-editsettings allowAdding="true" allowEditing="true"
allowDeleting="true" mode="Row"></e-treegrid-editsettings>
<e-treegrid-columns>
<e-treegrid-column field="TaskId" headerText="Task ID"
isPrimaryKey="true" width="90"></e-treegrid-column>
<e-treegrid-column field="TaskName" headerText="Task Name" width="220"></e-treegrid-column>
</e-treegrid-columns>
</ejs-treegrid>Always seton one column — editing and delete operations require it.isPrimaryKey="true"
<ejs-treegrid id="TreeGrid" dataSource="@data" childMapping="Children"
treeColumnIndex="1" toolbar="@(new List<string>() {"Add","Edit","Delete","Update","Cancel"})">
<e-treegrid-editsettings allowAdding="true" allowEditing="true"
allowDeleting="true" mode="Row"></e-treegrid-editsettings>
<e-treegrid-columns>
<e-treegrid-column field="TaskId" headerText="Task ID"
isPrimaryKey="true" width="90"></e-treegrid-column>
<e-treegrid-column field="TaskName" headerText="Task Name" width="220"></e-treegrid-column>
</e-treegrid-columns>
</ejs-treegrid>务必在某一列设置— 编辑和删除操作需要此项。isPrimaryKey="true"
isFrozenfrozenColumnsshowCheckboxtextAlign="Right"idMappingchildMappingisFrozenfrozenColumnsshowCheckboxtextAlign="Right"idMappingchildMapping