Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
109 changes: 109 additions & 0 deletions ej2-asp-core-mvc/Release-notes/29.2.5.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
---
title: Essential Studio for ##Platform_Name## Weekly Release Release Notes
description: Essential Studio for ##Platform_Name## Weekly Release Release Notes
platform: ej2-asp-core-mvc
documentation: ug
---

# Essential Studio for ##Platform_Name## Release Notes

{% include release-info.html date="May 21, 2025" version="v29.2.5" passed="190218" failed="0" %}

{% directory path: _includes/release-notes/v29.2.5 %}

{% include {{file.url}} %}

{% enddirectory %}

## Test Results

| Component Name | Test Cases | Passed | Failed | Remarks |
|---------------|------------|--------|--------|---------|
| 3D Chart | 232 | 232 | 0 | All Passed |
| 3D Circular Chart | 374 | 374 | 0 | All Passed |
| Accordion | 106 | 106 | 0 | All Passed |
| AI Assist View | 431 | 431 | 0 | All Passed |
| App Bar | 50 | 50 | 0 | All Passed |
| Arc Gauge | 44 | 44 | 0 | All Passed |
| AutoComplete | 200 | 200 | 0 | All Passed |
| Breadcrumb | 160 | 160 | 0 | All Passed |
| Bullet Chart | 165 | 165 | 0 | All Passed |
| Button | 145 | 145 | 0 | All Passed |
| ButtonGroup | 120 | 120 | 0 | All Passed |
| calendar | 177 | 177 | 0 | All Passed |
| Carousel | 61 | 61 | 0 | All Passed |
| Chart | 3666 | 3666 | 0 | All Passed |
| Chat UI | 184 | 184 | 0 | All Passed |
| Checkbox | 37 | 37 | 0 | All Passed |
| CircularGauge | 356 | 356 | 0 | All Passed |
| ColorPicker | 130 | 130 | 0 | All Passed |
| Combo Box | 136 | 136 | 0 | All Passed |
| Common | 709 | 709 | 0 | All Passed |
| Context Menu | 105 | 105 | 0 | All Passed |
| Data Grid | 2727 | 2727 | 0 | All Passed |
| Date Picker | 381 | 381 | 0 | All Passed |
| Date Range Picker | 418 | 418 | 0 | All Passed |
| Date Time Picker | 322 | 322 | 0 | All Passed |
| Diagram | 18542 | 18542 | 0 | All Passed |
| Document Editor | 3315 | 3315 | 0 | All Passed |
| DropDown Button | 132 | 132 | 0 | All Passed |
| Dropdown List | 191 | 191 | 0 | All Passed |
| Dropdown Tree | 105 | 105 | 0 | All Passed |
| File Manager | 2197 | 2197 | 0 | All Passed |
| Floating Action Button | 174 | 174 | 0 | All Passed |
| Gantt | 1976 | 1976 | 0 | All Passed |
| HeatMap Chart | 478 | 478 | 0 | All Passed |
| Image Editor | 1653 | 1653 | 0 | All Passed |
| In-place Editor | 642 | 642 | 0 | All Passed |
| Kanban | 268 | 268 | 0 | All Passed |
| LinearGauge | 308 | 308 | 0 | All Passed |
| Listbox | 115 | 115 | 0 | All Passed |
| ListView | 83 | 83 | 0 | All Passed |
| Maps | 1126 | 1126 | 0 | All Passed |
| Mention | 39 | 39 | 0 | All Passed |
| Menu | 187 | 187 | 0 | All Passed |
| Message | 207 | 207 | 0 | All Passed |
| Multicolumn Combo Box | 254 | 254 | 0 | All Passed |
| Multiselect Dropdown | 297 | 297 | 0 | All Passed |
| Numeric Text Box | 46 | 46 | 0 | All Passed |
| OTP Input | 123 | 123 | 0 | All Passed |
| PDF Viewer | 18138 | 18138 | 0 | All Passed |
| Pivot Table | 2061 | 2061 | 0 | All Passed |
| Progress Bar | 81 | 81 | 0 | All Passed |
| Progress Button | 132 | 132 | 0 | All Passed |
| Query Builder | 480 | 480 | 0 | All Passed |
| RadioButton | 45 | 45 | 0 | All Passed |
| RangeNavigator | 138 | 138 | 0 | All Passed |
| Rating | 110 | 110 | 0 | All Passed |
| Ribbon | 486 | 486 | 0 | All Passed |
| Rich Text Editor | 4470 | 4470 | 0 | All Passed |
| schedule | 4576 | 4576 | 0 | All Passed |
| sidebar | 80 | 80 | 0 | All Passed |
| Signature | 105 | 105 | 0 | All Passed |
| Skeleton | 144 | 144 | 0 | All Passed |
| Slider | 292 | 292 | 0 | All Passed |
| SmithChart | 49 | 49 | 0 | All Passed |
| Sparkline | 57 | 57 | 0 | All Passed |
| Speech To Text | 200 | 200 | 0 | All Passed |
| Speed Dial | 366 | 366 | 0 | All Passed |
| Split Button | 144 | 144 | 0 | All Passed |
| Splitter | 42 | 42 | 0 | All Passed |
| Spreadsheet | 9832 | 9832 | 0 | All Passed |
| Stepper | 138 | 138 | 0 | All Passed |
| Stock Chart | 379 | 379 | 0 | All Passed |
| Switch | 31 | 31 | 0 | All Passed |
| Tab | 58 | 58 | 0 | All Passed |
| Text Area | 107 | 107 | 0 | All Passed |
| TextBox | 53 | 53 | 0 | All Passed |
| Time Picker | 187 | 187 | 0 | All Passed |
| Timeline | 213 | 213 | 0 | All Passed |
| Toast | 139 | 139 | 0 | All Passed |
| Toolbar | 46 | 46 | 0 | All Passed |
| ToolTip | 217 | 217 | 0 | All Passed |
| TreeGrid | 2703 | 2703 | 0 | All Passed |
| Treemap | 210 | 210 | 0 | All Passed |
| Treeview | 709 | 709 | 0 | All Passed |
| DocIO | 15413 | 15413 | 0 | All Passed |
| PDF | 12314 | 12314 | 0 | All Passed |
| Presentation | 54243 | 54243 | 0 | All Passed |
| XlsIO | 17136 | 17136 | 0 | All Passed |
41 changes: 20 additions & 21 deletions ej2-asp-core-mvc/code-snippet/grid/edit/batch-single/razor
Original file line number Diff line number Diff line change
@@ -1,39 +1,38 @@
@Html.EJS().Grid("grid").DataSource((IEnumerable<object>)ViewBag.DataSource).Height("348px").AllowPaging().EnableHover(false).Columns(col =>
{
col.Field("OrderID").HeaderText("Order ID").IsPrimaryKey(true).Width("120").ValidationRules(new { required = "true"}).TextAlign(Syncfusion.EJ2.Grids.TextAlign.Right).Add();
col.Field("CustomerID").HeaderText("Customer Name").Width("150").ValidationRules(new { required = "true"}).Add();
col.Field("Freight").HeaderText("Freight").Width("120").Format("C2").EditType("numericedit").ValidationRules(new { required = "true", min=3 ,max=1000 }).TextAlign(Syncfusion.EJ2.Grids.TextAlign.Right).Add();
col.Field("ShipName").HeaderText("Ship Name").Width("150").ValidationRules(new { required = "true"}).Add();
col.Field("ShipCountry").HeaderText("Ship Country").EditType("dropdownedit").Width("150").ValidationRules(new { required = "true"}).Add();
}).Created("created").Load("load").EditSettings(edit => { edit.AllowAdding(true).AllowEditing(true).AllowDeleting(true).Mode(Syncfusion.EJ2.Grids.EditMode.Batch); }).Toolbar(new List<string>() { "Add", "Delete", "Update", "Cancel" }).Render()
@Html.EJS().Grid("grid").DataSource((IEnumerable<object>)ViewBag.DataSource).Height("348px").AllowPaging().EnableHover(false).Columns(col => {
col.Field("OrderID").HeaderText("Order ID").IsPrimaryKey(true).Width("120").ValidationRules(new { required = "true" }).TextAlign(Syncfusion.EJ2.Grids.TextAlign.Right).Add();
col.Field("CustomerID").HeaderText("Customer Name").Width("150").ValidationRules(new { required = "true" }).Add();
col.Field("Freight").HeaderText("Freight").Width("120").Format("C2").EditType("numericedit").ValidationRules(new { required = "true", min=3, max=1000 }).TextAlign(Syncfusion.EJ2.Grids.TextAlign.Right).Add();
col.Field("ShipName").HeaderText("Ship Name").Width("150").ValidationRules(new { required = "true" }).Add();
col.Field("ShipCountry").HeaderText("Ship Country").EditType("dropdownedit").Width("150").ValidationRules(new { required = "true" }).Add();
}).Created("created").Load("load").EditSettings(edit => { edit.AllowAdding(true).AllowEditing(true).AllowDeleting(true).Mode(Syncfusion.EJ2.Grids.EditMode.Batch); }).Toolbar(new List < string > () { "Add", "Delete", "Update", "Cancel" }).Render()
<script>
function created() {
var grid = document.getElementById('grid').ej2_instances[0];
grid.getContentTable().addEventListener('click', function(args) {
grid.getContentTable().addEventListener('click', function(args) {
if (args.target.classList.contains('e-rowcell')) {
grid.editModule.editCell(parseInt(args.target.getAttribute('index')),
grid.getColumnByIndex(parseInt(args.target.getAttribute('data-colindex'))).field);
grid.editModule.editCell(parseInt(args.target.getAttribute('index')),
grid.getColumnByIndex(parseInt(args.target.getAttribute('aria-colindex')) - 1).field);
}
});
}
function load() {
var grid = document.getElementById('grid').ej2_instances[0];
grid.element.addEventListener('keydown', function(event) {
grid.element.addEventListener('keydown', function(event) {
var closestTableCell = e.target.closest('td');
if (event.keyCode === 39 && !ej.base.isNullOrUndefined(closestTableCell.nextSibling)) {
editACell(closestTableCell.nextSibling);
if (event.keyCode === 39 && !ej.base.isNullOrUndefined(closestTableCell.nextSibling)) {
editACell(closestTableCell.nextSibling);
}
if (event.keyCode === 37 && !ej.base.isNullOrUndefined(closestTableCell.previousSibling) && !grid.getColumnByIndex(parseInt(closestTableCell.previousSibling.getAttribute('data-colindex'))).isPrimaryKey) {
editACell(closestTableCell.previousSibling);
if (event.keyCode === 37 && !ej.base.isNullOrUndefined(closestTableCell.previousSibling) && !grid.getColumnByIndex(parseInt(closestTableCell.previousSibling.getAttribute('aria-colindex'))-1).isPrimaryKey) {
editACell(closestTableCell.previousSibling);
}
if (event.keyCode === 40 && !ej.base.isNullOrUndefined(closestTableCell.closest('tr').nextSibling)) {
editACell(closestTableCell.closest('tr').nextSibling.querySelectorAll('td')[parseInt(closestTableCell.getAttribute('data-colindex'))]);
if (event.keyCode === 40 && !ej.base.isNullOrUndefined(closestTableCell.closest('tr').nextSibling)) {
editACell(closestTableCell.closest('tr').nextSibling.querySelectorAll('td')[parseInt(closestTableCell.getAttribute('aria-colindex')) - 1]);
}
if (event.keyCode === 38 && !ej.base.isNullOrUndefined(closestTableCell.closest('tr').previousSibling)) {
editACell(closestTableCell.closest('tr').previousSibling.querySelectorAll('td')[parseInt(closestTableCell.getAttribute('data-colindex'))]);}});
if (event.keyCode === 38 && !ej.base.isNullOrUndefined(closestTableCell.closest('tr').previousSibling)) {
editACell(closestTableCell.closest('tr').previousSibling.querySelectorAll('td')[parseInt(closestTableCell.getAttribute('aria-colindex')) - 1]);}});
}
function editACell(args) {
var grid = document.getElementById('grid').ej2_instances[0];
grid.editModule.editCell(parseInt(args.getAttribute('index')),grid.getColumnByIndex(parseInt(args.getAttribute('data-colindex'))).field);
grid.editModule.editCell(parseInt(args.getAttribute('index')),grid.getColumnByIndex(parseInt(args.getAttribute('aria-colindex'))-1).field);
}
</script>
22 changes: 11 additions & 11 deletions ej2-asp-core-mvc/code-snippet/grid/edit/batch-single/tagHelper
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<ejs-grid id="grid" dataSource="ViewBag.DataSource" height="348px" allowPaging="true" enableHover="true" created="created" load="load" toolbar="@(new List<string>() {"Add", "Delete", "Update", "Cancel"})">
<ejs-grid id="grid" dataSource="ViewBag.DataSource" height="348px" allowPaging="true" enableHover="true" created="created" load="load" toolbar="@(new List<string>() {" Add", "Delete", "Update", "Cancel"})" >
<e-grid-editSettings allowAdding="true" allowEditing="true" allowDeleting="true" mode="Batch"></e-grid-editSettings>
<e-grid-columns>
<e-grid-column field="OrderID" headerText="Order ID" validationRules="@(new { required=true})" isPrimaryKey="true" textAlign="Right" width="100"></e-grid-column>
Expand All @@ -8,34 +8,34 @@
<e-grid-column field="ShipCountry" headerText="Ship Country" editType="dropdownedit" width="150" validationRules="@(new { required=true})"></e-grid-column>
</e-grid-columns>
</ejs-grid>
<script>
function created() {
<script>
function created() {
var grid = document.getElementById('grid').ej2_instances[0];
grid.getContentTable().addEventListener('click', function(args) {
if (args.target.classList.contains('e-rowcell')) {
grid.editModule.editCell(parseInt(args.target.getAttribute('index')),
grid.getColumnByIndex(parseInt(args.target.getAttribute('data-colindex'))).field);
grid.getColumnByIndex(parseInt(args.target.getAttribute('aria-colindex')) - 1).field);
}
});
}
function load() {
function load() {
var grid = document.getElementById('grid').ej2_instances[0];
grid.element.addEventListener('keydown', function(event) {
var closestTableCell = event.target.closest('td');
if (event.keyCode === 39 && !ej.base.isNullOrUndefined(closestTableCell.nextSibling)) {
editACell(closestTableCell.nextSibling);
}
if (event.keyCode === 37 && !ej.base.isNullOrUndefined(closestTableCell.previousSibling) && !grid.getColumnByIndex(parseInt(closestTableCell.previousSibling.getAttribute('data-colindex'))).isPrimaryKey) {
if (event.keyCode === 37 && !ej.base.isNullOrUndefined(closestTableCell.previousSibling) && !grid.getColumnByIndex(parseInt(closestTableCell.previousSibling.getAttribute('aria-colindex'))-1).isPrimaryKey) {
editACell(closestTableCell.previousSibling);
}
if (event.keyCode === 40 && !ej.base.isNullOrUndefined(closestTableCell.closest('tr').nextSibling)) {
editACell(closestTableCell.closest('tr').nextSibling.querySelectorAll('td')[parseInt(closestTableCell.getAttribute('data-colindex'))]);
editACell(closestTableCell.closest('tr').nextSibling.querySelectorAll('td')[parseInt(closestTableCell.getAttribute('aria-colindex')) - 1]);
}
if (event.keyCode === 38 && !ej.base.isNullOrUndefined(closestTableCell.closest('tr').previousSibling)) {
editACell(closestTableCell.closest('tr').previousSibling.querySelectorAll('td')[parseInt(closestTableCell.getAttribute('data-colindex'))]);}});
editACell(closestTableCell.closest('tr').previousSibling.querySelectorAll('td')[parseInt(closestTableCell.getAttribute('aria-colindex')) - 1]);}});
}
function editACell(args) {
function editACell(args) {
var grid = document.getElementById('grid').ej2_instances[0];
grid.editModule.editCell(parseInt(args.getAttribute('index')),grid.getColumnByIndex(parseInt(args.getAttribute('data-colindex'))).field);
grid.editModule.editCell(parseInt(args.getAttribute('index')),grid.getColumnByIndex(parseInt(args.getAttribute('aria-colindex'))-1).field);
}
</script>
</script>
Loading