From 4fe8cee64c99c795d60bc8830b41539e93818949 Mon Sep 17 00:00:00 2001 From: karthikeyan <120372603+Karthikeyanthangarajsf3938@users.noreply.github.com> Date: Fri, 14 Jun 2024 16:15:53 +0530 Subject: [PATCH 1/2] 890806: Added documentation for exception handling --- .../EJ2_ASP.MVC/getting-started-mvc.md | 32 ++++++++++++++++++ .../EJ2_ASP.NETCORE/getting-started-core.md | 32 ++++++++++++++++++ .../tree-grid/images/error-handling.png | Bin 0 -> 57674 bytes 3 files changed, 64 insertions(+) create mode 100644 ej2-asp-core-mvc/tree-grid/images/error-handling.png diff --git a/ej2-asp-core-mvc/tree-grid/EJ2_ASP.MVC/getting-started-mvc.md b/ej2-asp-core-mvc/tree-grid/EJ2_ASP.MVC/getting-started-mvc.md index 06bcd4a044..cfa4e50045 100644 --- a/ej2-asp-core-mvc/tree-grid/EJ2_ASP.MVC/getting-started-mvc.md +++ b/ej2-asp-core-mvc/tree-grid/EJ2_ASP.MVC/getting-started-mvc.md @@ -188,6 +188,38 @@ By default, filtered records are shown along with its parent records. This behav ![ASP.NET MVC Tree Grid with Filtering](images/treegrid-sample.png) +## Handling errors + +Error handling in Tree Grid identifies exceptions and notifies them through the [actionFailure](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.treegrid.treegrid.html#Syncfusion_EJ2_TreeGrid_TreeGrid_ActionFailure) event. When configuring the Tree Grid or enabling specific features through its API, mistakes can occur. The `actionFailure` event can be used to manage these errors. This event triggers when such mistakes happen. The `actionFailure` event handles various scenarios, including: + +* For CRUD operations, row drag and drop, and persisiting the selection, ensure the `isPrimaryKey` property is mapped to a unique data column. Failure to do so will cause an error. +* [Paging](https://ej2.syncfusion.com/aspnetmvc/documentation/tree-grid/paging) is not supported with [virtualization](https://ej2.syncfusion.com/aspnetmvc/documentation/tree-grid/virtual-scroll). Enabling `paging` with `virtualization` will result in an error. +* To render the Tree Grid, map either the [dataSource](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.TreeGrid.TreeGrid.html#Syncfusion_EJ2_TreeGrid_TreeGrid_DataSource) or [columns](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.TreeGrid.TreeGrid.html#Syncfusion_EJ2_TreeGrid_TreeGrid_Columns) property. Failure to do so will result in an error. +* Freeze columns by mapping either `isFrozen` or [frozenColumns](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.TreeGrid.TreeGrid.html#Syncfusion_EJ2_TreeGrid_TreeGrid_FrozenColumns). Enabling both properties simultaneously will result in an error. +* The [detailTemplate](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.TreeGrid.TreeGrid.html#Syncfusion_EJ2_TreeGrid_TreeGrid_DetailTemplate) is not supported with `virtualization` and `stacked header`. Enabling them with these features will result in an error. +* The [frozenRows](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.TreeGrid.TreeGrid.html#Syncfusion_EJ2_TreeGrid_TreeGrid_FrozenRows) and `frozenColumns` are not supported with [rowTemplate](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.TreeGrid.TreeGrid.html#Syncfusion_EJ2_TreeGrid_TreeGrid_RowTemplate), `detailTemplate`, and [cell editing](https://ej2.syncfusion.com/aspnetmvc/documentation/tree-grid/editing/cell-editing). Enabling them with these features will result in an error. +* In `stacked header`, the `freeze` direction is incompatible with [column reordering](https://ej2.syncfusion.com/aspnetmvc/documentation/tree-grid/columns/column-reorder). +* [Selection](https://ej2.syncfusion.com/aspnetmvc/documentation/tree-grid/selection/selection) functionality is not supported when using `rowTemplate`. Enabling both properties simultaneously will result in an error. +* Set the [treeColumnIndex](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.TreeGrid.TreeGrid.html#Syncfusion_EJ2_TreeGrid_TreeGrid_TreeColumnIndex) value to display the tree structure. Make sure the value does not exceed the total column count, or it will result in an error. +* For `virtualization`, do not specify height and width in percentages. Using percentages will result in an error. +* When using the default filter ([filterbar](https://ej2.syncfusion.com/aspnetmvc/documentation/tree-grid/filtering/filter-bar)) type, do not apply the other [filterType](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.TreeGrid.FilterType.html) to any column in the same tree grid, as this will cause an error. +* In Tree Grid, avoid enabling [idMapping](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.TreeGrid.TreeGrid.html#Syncfusion_EJ2_TreeGrid_TreeGrid_IdMapping) and [childMapping](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.TreeGrid.TreeGrid.html#Syncfusion_EJ2_TreeGrid_TreeGrid_ChildMapping) simultaneously. Enabling both properties at the same time will result in an error. +* The `showCheckbox` column should only be defined in the tree column. Defining it elsewhere will result in an error. +* The `textAlign` right is not applicable for tree columns in the Tree Grid. Enabling right alignment for tree columns will result in an error. + +The following code example shows how to use the [actionFailure](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.treegrid.treegrid.html#Syncfusion_EJ2_TreeGrid_TreeGrid_ActionFailure) event in the Tree Grid control to display an exception when `isPrimaryKey` are not configured properly in the Tree Grid. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/tree-grid/getting-start-mvc/error-handling/razor %} +{% endhighlight %} +{% highlight c# tabtitle="HomeController.cs" %} +{% include code-snippet/tree-grid/getting-start-mvc/error-handling/errorHandling.cs %} +{% endhighlight %} +{% endtabs %} + +![ASP.NET MVC Tree Grid with Handling errors](images/error-handling.png) + N> [View Sample in GitHub](https://github.com/SyncfusionExamples/ASP-NET-MVC-Getting-Started-Examples/tree/main/TreeGrid/ASP.NET%20MVC%20Razor%20Examples). N> You can refer to our [ASP.NET MVC Tree Grid](https://www.syncfusion.com/aspnet-mvc-ui-controls/tree-grid) feature tour page for its groundbreaking feature representations. You can also explore our [ASP.NET MVC Tree Grid example](https://ej2.syncfusion.com/aspnetmvc/TreeGrid/Overview#/material) to knows how to present and manipulate data. diff --git a/ej2-asp-core-mvc/tree-grid/EJ2_ASP.NETCORE/getting-started-core.md b/ej2-asp-core-mvc/tree-grid/EJ2_ASP.NETCORE/getting-started-core.md index bacc1c34c3..a2247de65e 100644 --- a/ej2-asp-core-mvc/tree-grid/EJ2_ASP.NETCORE/getting-started-core.md +++ b/ej2-asp-core-mvc/tree-grid/EJ2_ASP.NETCORE/getting-started-core.md @@ -612,6 +612,38 @@ public class TreeGridItems N> [View Sample in GitHub](https://github.com/SyncfusionExamples/ASP-NET-Core-Getting-Started-Examples/tree/main/TreeGrid/ASP.NET%20Core%20Tag%20Helper%20Examples). +## Handling errors + +Error handling in Tree Grid identifies exceptions and notifies them through the [actionFailure](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.TreeGrid.TreeGrid.html#Syncfusion_EJ2_TreeGrid_TreeGrid_ActionFailure) event. When configuring the Tree Grid or enabling specific features through its API, mistakes can occur. The `actionFailure` event can be used to manage these errors. This event triggers when such mistakes happen. The `actionFailure` event handles various scenarios, including: + +* For CRUD operations, row drag and drop, and persisiting the selection, ensure the `isPrimaryKey` property is mapped to a unique data column. Failure to do so will cause an error. +* [Paging](https://ej2.syncfusion.com/aspnetcore/documentation/tree-grid/paging) is not supported with [virtualization](https://ej2.syncfusion.com/aspnetcore/documentation/tree-grid/virtual-scroll). Enabling `paging` with `virtualization` will result in an error. +* To render the Tree Grid, map either the [dataSource](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.TreeGrid.TreeGrid.html#Syncfusion_EJ2_TreeGrid_TreeGrid_DataSource) or [columns](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.TreeGrid.TreeGrid.html#Syncfusion_EJ2_TreeGrid_TreeGrid_Columns) property. Failure to do so will result in an error. +* Freeze columns by mapping either `isFrozen` or [frozenColumns](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.TreeGrid.TreeGrid.html#Syncfusion_EJ2_TreeGrid_TreeGrid_FrozenColumns). Enabling both properties simultaneously will result in an error. +* The [detailTemplate](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.TreeGrid.TreeGrid.html#Syncfusion_EJ2_TreeGrid_TreeGrid_DetailTemplate) is not supported with `virtualization` and `stacked header`. Enabling them with these features will result in an error. +* The [frozenRows](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.TreeGrid.TreeGrid.html#Syncfusion_EJ2_TreeGrid_TreeGrid_FrozenRows) and `frozenColumns` are not supported with [rowTemplate](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.TreeGrid.TreeGrid.html#Syncfusion_EJ2_TreeGrid_TreeGrid_RowTemplate), `detailTemplate`, and [cell editing](https://ej2.syncfusion.com/aspnetcore/documentation/tree-grid/editing/cell-editing). Enabling them with these features will result in an error. +* In `stacked header`, the `freeze` direction is incompatible with [column reordering](https://ej2.syncfusion.com/aspnetcore/documentation/tree-grid/columns/column-reorder). +* [Selection](https://ej2.syncfusion.com/aspnetcore/documentation/tree-grid/selection/selection) functionality is not supported when using `rowTemplate`. Enabling both properties simultaneously will result in an error. +* Set the [treeColumnIndex](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.TreeGrid.TreeGrid.html#Syncfusion_EJ2_TreeGrid_TreeGrid_TreeColumnIndex) value to display the tree structure. Make sure the value does not exceed the total column count, or it will result in an error. +* For `virtualization`, do not specify height and width in percentages. Using percentages will result in an error. +* When using the default filter ([filterbar](https://ej2.syncfusion.com/aspnetcore/documentation/tree-grid/filtering/filter-bar)) type, do not apply the other [filterType](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.TreeGrid.FilterType.html) to columns within the same tree grid, as this will result in an error. +* In Tree Grid avoid enabling [idMapping](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.TreeGrid.TreeGrid.html#Syncfusion_EJ2_TreeGrid_TreeGrid_IdMapping) and [childMapping](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.TreeGrid.TreeGrid.html#Syncfusion_EJ2_TreeGrid_TreeGrid_ChildMapping) simultaneously. Enabling both properties at the same time will result in an error. +* The `showCheckbox` column should only be defined in the tree column. Defining it elsewhere will result in an error. +* The `textAlign` right is not applicable for tree columns in the Tree Grid. Enabling right alignment for tree columns will result in an error. + +The following code example shows how to use the [actionFailure](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.TreeGrid.TreeGrid.html#Syncfusion_EJ2_TreeGrid_TreeGrid_ActionFailure) event in the Tree Grid control to display an exception when `isPrimaryKey` are not configured properly in the Tree Grid. + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/tree-grid/getting-start-core/error-handling/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="ErrorHandling.cs" %} +{% include code-snippet/tree-grid/getting-start-mvc/error-handling/errorHandling.cs %} +{% endhighlight %} +{% endtabs %} + +![ASP.NET CORE Tree Grid with Handling errors](images/error-handling.png) + ## See also * [Getting Started with Syncfusion ASP.NET Core using Razor Pages](https://ej2.syncfusion.com/aspnetcore/documentation/getting-started/razor-pages/) diff --git a/ej2-asp-core-mvc/tree-grid/images/error-handling.png b/ej2-asp-core-mvc/tree-grid/images/error-handling.png new file mode 100644 index 0000000000000000000000000000000000000000..2513ab6b4f53ebe89a3d98b7b71d1e53a5328823 GIT binary patch literal 57674 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 literal 0 HcmV?d00001 From 3fee485efda828ccf07fa8897edf6db1602b9cfb Mon Sep 17 00:00:00 2001 From: Karthikeyanthangarajsf3938 Date: Fri, 14 Jun 2024 16:25:41 +0530 Subject: [PATCH 2/2] 890806: Added documentation for exception handling --- .../error-handling/errorHandling.cs | 6 ++ .../error-handling/tagHelper | 17 ++++ .../error-handling/errorHandling.cs | 93 +++++++++++++++++++ .../getting-start-mvc/error-handling/razor | 31 +++++++ 4 files changed, 147 insertions(+) create mode 100644 ej2-asp-core-mvc/code-snippet/tree-grid/getting-start-core/error-handling/errorHandling.cs create mode 100644 ej2-asp-core-mvc/code-snippet/tree-grid/getting-start-core/error-handling/tagHelper create mode 100644 ej2-asp-core-mvc/code-snippet/tree-grid/getting-start-mvc/error-handling/errorHandling.cs create mode 100644 ej2-asp-core-mvc/code-snippet/tree-grid/getting-start-mvc/error-handling/razor diff --git a/ej2-asp-core-mvc/code-snippet/tree-grid/getting-start-core/error-handling/errorHandling.cs b/ej2-asp-core-mvc/code-snippet/tree-grid/getting-start-core/error-handling/errorHandling.cs new file mode 100644 index 0000000000..508db5cc3f --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/tree-grid/getting-start-core/error-handling/errorHandling.cs @@ -0,0 +1,6 @@ +public IActionResult Index() +{ + var tree = TreeData.GetDefaultData(); + ViewBag.dataSource = tree; + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/tree-grid/getting-start-core/error-handling/tagHelper b/ej2-asp-core-mvc/code-snippet/tree-grid/getting-start-core/error-handling/tagHelper new file mode 100644 index 0000000000..e1bde95bd5 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/tree-grid/getting-start-core/error-handling/tagHelper @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/ej2-asp-core-mvc/code-snippet/tree-grid/getting-start-mvc/error-handling/errorHandling.cs b/ej2-asp-core-mvc/code-snippet/tree-grid/getting-start-mvc/error-handling/errorHandling.cs new file mode 100644 index 0000000000..eb2b3c6ea4 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/tree-grid/getting-start-mvc/error-handling/errorHandling.cs @@ -0,0 +1,93 @@ +public class HomeController : Controller +{ + public ActionResult Index() + { + return View(TreeGridItems.GetTreeData()); + } +} +public class TreeGridItems +{ + public TreeGridItems() { } + public int TaskId { get; set; } + public string TaskName { get; set; } + public DateTime StartDate { get; set; } + public int Duration { get; set; } + public List Children { get; set; } + + public static List GetTreeData() + { + List BusinessObjectCollection = new List(); + + TreeGridItems Record1 = null; + + Record1 = new TreeGridItems() + { + TaskId = 1, + TaskName = "Planning", + StartDate = new DateTime(2016, 06, 07), + Duration = 5, + Children = new List(), + }; + TreeGridItems Child1 = new TreeGridItems() + { + TaskId = 2, + TaskName = "Plan timeline", + StartDate = new DateTime(2016, 06, 07), + Duration = 5 + }; + + TreeGridItems Child2 = new TreeGridItems() + { + TaskId = 3, + TaskName = "Plan budget", + StartDate = new DateTime(2016, 06, 07), + Duration = 5 + }; + TreeGridItems Child3 = new TreeGridItems() + { + TaskId = 4, + TaskName = "Allocate resources", + StartDate = new DateTime(2016, 06, 07), + Duration = 5 + }; + Record1.Children.Add(Child1); + Record1.Children.Add(Child2); + Record1.Children.Add(Child3); + TreeGridItems Record2 = new TreeGridItems() + { + TaskId = 6, + TaskName = "Design", + StartDate = new DateTime(2021, 08, 25), + Duration = 3, + Children = new List() + }; + TreeGridItems Child5 = new TreeGridItems() + { + TaskId = 7, + TaskName = "Software Specification", + StartDate = new DateTime(2021, 08, 25), + Duration = 3 + }; + + TreeGridItems Child6 = new TreeGridItems() + { + TaskId = 8, + TaskName = "Develop prototype", + StartDate = new DateTime(2021, 08, 25), + Duration = 3 + }; + TreeGridItems Child7 = new TreeGridItems() + { + TaskId = 9, + TaskName = "Get approval from customer", + StartDate = new DateTime(2024, 06, 27), + Duration = 2 + }; + Record2.Children.Add(Child5); + Record2.Children.Add(Child6); + Record2.Children.Add(Child7); + BusinessObjectCollection.Add(Record1); + BusinessObjectCollection.Add(Record2); + return BusinessObjectCollection; + } +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/tree-grid/getting-start-mvc/error-handling/razor b/ej2-asp-core-mvc/code-snippet/tree-grid/getting-start-mvc/error-handling/razor new file mode 100644 index 0000000000..983bebd7af --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/tree-grid/getting-start-mvc/error-handling/razor @@ -0,0 +1,31 @@ +@using Syncfusion.EJ2.Grids +@model List + +@(Html.EJS().TreeGrid("TreeGrid").DataSource((IEnumerable)ViewBag.datasource) + .EditSettings(edit => + { + edit.AllowAdding(true); + edit.AllowDeleting(true); + edit.AllowEditing(true); + }) + .Columns(col => + { + col.Field("TaskId").HeaderText("Task ID").Width(120) + .TextAlign(TextAlign.Right).Add(); + col.Field("TaskName").HeaderText("Task Name").Add(); + col.Field("StartDate").HeaderText("Start Date").Width(150).Format("yMd") + .EditType("datepickeredit").TextAlign(TextAlign.Right).Add(); + col.Field("Duration").HeaderText("Duration").Width("110").EditType("numericedit") + .Edit(new { @params = new { format = "n" } }).TextAlign(TextAlign.Right).Add(); + + }).Height(400).ChildMapping("Children").ActionFailure("actionFailure").TreeColumnIndex(1).Render()) + + < script > + function actionFailure(args) { + var treegrid = document.getElementById("TreeGrid").ej2_instances[0]; + var span = document.createElement('span'); + treegrid.element.parentNode.insertBefore(span, treegrid.element); + span.style.color = '#FF0000' + span.innerHTML = args.error[0]; + } + \ No newline at end of file