Skip to content

Commit 60273e8

Browse files
authored
Merge branch 'hotfix/hotfix-v28.2.3' into ES-930548-FM
2 parents 89de782 + 9958d23 commit 60273e8

File tree

339 files changed

+7431
-709
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

339 files changed

+7431
-709
lines changed

ej2-asp-core-mvc/EJ2_ASP.NETCORE/nuget-packages.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -271,4 +271,4 @@ The ASP.NET Core Grid Export is an ideal library for visualizing the Grid data i
271271
</ul>
272272
</td>
273273
</tr>
274-
</table>
274+
</table>
Loading
Loading
Loading

ej2-asp-core-mvc/EJ2_ASP.NETCORE/visual-studio-integration/create-project.md

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -56,16 +56,6 @@ N> Before using the Syncfusion ASP.NET Core Project Template, check whether the
5656
> </thead>
5757
> <tbody>
5858
> <tr>
59-
> <td>.NET 6.0</td>
60-
> <td>v19.4.0.38</td>
61-
> <td>Visual Studio 2022</td>
62-
> </tr>
63-
> <tr>
64-
> <td>.NET 7.0</td>
65-
> <td>v20.4.0.38</td>
66-
> <td>Visual Studio 2022</td>
67-
> </tr>
68-
> <tr>
6959
> <td>.NET 8.0</td>
7060
> <td>v23.2.4</td>
7161
> <td>Visual Studio 2022</td>
@@ -81,10 +71,10 @@ N> Before using the Syncfusion ASP.NET Core Project Template, check whether the
8171

8272
| <b>Project Type</b> | <b>.NET Core Version</b> | <b>Themes</b> | <b>Assets From</b> |
8373
|---------------------|--------------------------|---------------|--------------------|
84-
| ASP.NET Core Web App | .NET Core 6.0, .NET 7.0, .NET 8.0 and .NET 9.0| Material, Fabric, Fluent, Bootstrap, Bootstrap 4, Bootstrap 5, High Contrast, Tailwind CSS | CDN, NPM, Installed Location |
85-
| ASP.NET Core Web App (Model-View-Controller) | .NET 5.0, .NET 6.0, .NET 7.0, .NET 8.0 and .NET 9.0 | Material, Fabric, Fluent, Bootstrap, Bootstrap 4, Bootstrap 5, High Contrast, Tailwind CSS | CDN, NPM, Installed Location |
86-
| Angular | .NET 5.0, .NET 6.0, and .NET 7.0 | Material, Fabric, Fluent, Bootstrap, Bootstrap 4, Bootstrap 5, High Contrast, Tailwind CSS | CDN, NPM |
87-
| React | .NET 5.0, .NET6.0, and .NET 7.0 | Material, Fabric, Fluent, Bootstrap, Bootstrap 4, Bootstrap 5, High Contrast, Tailwind CSS | CDN, NPM |
74+
| ASP.NET Core Web App | .NET 8.0 and .NET 9.0| Material, Fabric, Fluent, Bootstrap, Bootstrap 4, Bootstrap 5, High Contrast, Tailwind CSS | CDN, NPM, Installed Location |
75+
| ASP.NET Core Web App (Model-View-Controller) | .NET 8.0 and .NET 9.0 | Material, Fabric, Fluent, Bootstrap, Bootstrap 4, Bootstrap 5, High Contrast, Tailwind CSS | CDN, NPM, Installed Location |
76+
| Angular | .NET 8.0, and .NET 9.0 | Material, Fabric, Fluent, Bootstrap, Bootstrap 4, Bootstrap 5, High Contrast, Tailwind CSS | CDN, NPM |
77+
| React | .NET8.0, and .NET 9.0 | Material, Fabric, Fluent, Bootstrap, Bootstrap 4, Bootstrap 5, High Contrast, Tailwind CSS | CDN, NPM |
8878

8979
N> The Syncfusion ASP.NET Core (Essential JS 2) Project Template provides ASP.NET Core, Angular, and React project templates support from v17.1.0.47.
9080

Loading
Loading
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
---
2+
title: Essential Studio for ##Platform_Name## Main Release Release Notes
3+
description: Essential Studio for ##Platform_Name## Main Release Release Notes
4+
platform: ej2-asp-core-mvc
5+
documentation: ug
6+
---
7+
8+
# Essential Studio for ##Platform_Name## Release Notes
9+
10+
{% include release-info.html date="March 20, 2025" version="v29.1.33" %}
11+
12+
{% directory path: _includes/release-notes/v29.1.33 %}
13+
14+
{% include {{file.url}} %}
15+
16+
{% enddirectory %}
Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
1-
@model List<ThreeDimensionalChartSample.Controllers.Data>
2-
31
@Html.EJS().Chart3D("container").EnableRotation(true).Rotation(7).Tilt(10).Depth(100).PrimaryXAxis(px => px.ValueType(Syncfusion.EJ2.Charts.ValueType.Category).LabelPlacement(Syncfusion.EJ2.Charts.LabelPlacement.BetweenTicks).LabelRotation(-45)
42
).Series(series =>
53
{
6-
series.Type(Syncfusion.EJ2.Charts.Chart3DSeriesType.Column).DataSource(Model).XName("X").YName("Y").Name("Gold").Add();
4+
series.Type(Syncfusion.EJ2.Charts.Chart3DSeriesType.Column).DataSource(ViewBag.dataSource).XName("X").YName("Y").Name("Gold").Add();
75
}).Render()

ej2-asp-core-mvc/code-snippet/bullet-chart/getting-started/default/razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@
44
.ValueField("value")
55
.TargetField("target")
66
.Minimum(0).Maximum(300).Interval(50)
7-
.DataSource(ViewBag.dataSource)
7+
.DataSource(Model)
88
.Render())

ej2-asp-core-mvc/code-snippet/bullet-chart/getting-started/title/razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@
55
.ValueField("value")
66
.TargetField("target")
77
.Minimum(0).Maximum(300).Interval(50)
8-
.DataSource(ViewBag.dataSource)
8+
.DataSource(Model)
99
.Render())
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
public IActionResult Index()
2+
{
3+
ViewBag.StackedHeaderData = OrdersDetails.GetAllRecords();
4+
return View();
5+
}
Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
@Html.EJS().Grid("Grid").DataSource((IEnumerable<object>)ViewBag.StackedHeaderData).Columns(col =>
2+
{
3+
col.Field("CustomerID").HeaderText("Customer ID").Width("160").MinWidth("100").TextAlign(Syncfusion.EJ2.Grids.TextAlign.Right).IsPrimaryKey(true).ShowInColumnChooser(false).Add();
4+
col.Field("CustomerName").HeaderText("Name").Width("100").MinWidth("100").Add();
5+
col.HeaderText("Order Details").TextAlign(Syncfusion.EJ2.Grids.TextAlign.Center).Columns(new List<Syncfusion.EJ2.Grids.GridColumn>() {
6+
new Syncfusion.EJ2.Grids.GridColumn { Field = "OrderID", Width = "90", HeaderText = "ID", TextAlign=Syncfusion.EJ2.Grids.TextAlign.Right},
7+
new Syncfusion.EJ2.Grids.GridColumn { Field = "OrderDate", Width = "110", TextAlign=Syncfusion.EJ2.Grids.TextAlign.Right, Format="yMd", HeaderText = "Date" } }).Add();
8+
col.HeaderText("Shipping Details").TextAlign(Syncfusion.EJ2.Grids.TextAlign.Center).Columns(new List<Syncfusion.EJ2.Grids.GridColumn>() {
9+
new Syncfusion.EJ2.Grids.GridColumn { Field = "ShipCountry", Width = "115", HeaderText = "Country" },
10+
new Syncfusion.EJ2.Grids.GridColumn { Field = "Freight", Width = "130", HeaderText = "Charges",TextAlign=Syncfusion.EJ2.Grids.TextAlign.Right, Format="C2"}}).Add();
11+
col.HeaderText("Delivery Details").TextAlign(Syncfusion.EJ2.Grids.TextAlign.Center).Columns(new List<Syncfusion.EJ2.Grids.GridColumn>() {
12+
new Syncfusion.EJ2.Grids.GridColumn { Field = "Status", Width = "110", HeaderText = "Status", TextAlign=Syncfusion.EJ2.Grids.TextAlign.Center}}).Add();
13+
}).AllowPaging().ShowColumnChooser(true).ColumnChooserSettings(new Syncfusion.EJ2.Grids.GridColumnChooserSettings { Template = "#column-chooser-template", HeaderTemplate = "#ccHeadertemplate", FooterTemplate = "#ccFootertemplate", RenderCustomColumnChooser = "renderCustomColumnChooser" }).Created("onCreated").Toolbar(new List<string>() { "ColumnChooser" }).Render()
14+
<script id='ccHeadertemplate' type="text/x-template">
15+
<div>
16+
<span class="e-icons e-columns" id="column-chooser-icon"></span>
17+
<span id="column-chooser-text">Column Options</span>
18+
</div>
19+
</script>
20+
<script type="text/x-template" id="column-chooser-template">
21+
<div id="tree-view-list" ></div>
22+
</script>
23+
<script id='ccFootertemplate' type="text/x-template">
24+
<div id="columnChooserFooter">
25+
<button id="submitButton">Apply</button>
26+
<button id="abortButton">Close</button>
27+
</div>
28+
</script>
29+
<script type="text/javascript">
30+
var treeObj;
31+
var treeData = [];
32+
function renderCustomColumnChooser(targetLHTMLElement, columns) {
33+
var grid = document.getElementById("Grid").ej2_instances[0];
34+
var parentNodes = [
35+
{ id: 1, name: 'Order Details', hasChild: true, expanded: true },
36+
{ id: 2, name: 'Shipping Details', hasChild: true, expanded: true },
37+
{ id: 3, name: 'Delivery Status', hasChild: true, expanded: true },
38+
];
39+
if (columns && columns.length) {
40+
treeData = columns.map(function (column) {
41+
var parentId;
42+
switch (column.field) {
43+
case 'OrderID':
44+
case 'OrderDate':
45+
parentId = 1;
46+
break;
47+
case 'ShipCountry':
48+
case 'Freight':
49+
parentId = 2;
50+
break;
51+
case 'Status':
52+
parentId = 3;
53+
break;
54+
}
55+
return {
56+
id: column.uid,
57+
name: column.headerText,
58+
pid: parentId,
59+
isChecked: column.visible
60+
};
61+
});
62+
var uniquePids = [];
63+
treeData.forEach(function (item) {
64+
if (uniquePids.indexOf(item.pid) === -1) {
65+
uniquePids.push(item.pid);
66+
}
67+
});
68+
var filteredParents = parentNodes.filter(function (parent) {
69+
return uniquePids.indexOf(parent.id) !== -1;
70+
});
71+
treeData = treeData.concat(filteredParents);
72+
} else {
73+
treeData = [];
74+
}
75+
treeObj = new ej.navigations.TreeView({
76+
fields: { dataSource: treeData, id: 'id', parentID: 'pid', text: 'name', hasChildren: 'hasChild' },
77+
showCheckBox: true,
78+
nodeClicked: nodeCheck,
79+
keyPress: nodeCheck,
80+
enableRtl: grid.enableRtl ? true : false,
81+
cssClass: "no-border"
82+
});
83+
if (columns && columns.length) {
84+
treeObj.appendTo(targetLHTMLElement);
85+
} else {
86+
var noRecordDiv = document.createElement('div');
87+
noRecordDiv.innerHTML = 'No Matches Found';
88+
noRecordDiv.className = 'no-record-text';
89+
targetLHTMLElement.appendChild(noRecordDiv);
90+
}
91+
}
92+
93+
function nodeCheck(args) {
94+
var checkedNode = [args.node];
95+
if (args.event.target.classList.contains('e-fullrow') || args.event.key == "Enter") {
96+
var getNodeDetails = treeObj.getNode(args.node);
97+
if (getNodeDetails.isChecked == 'true') {
98+
treeObj.uncheckAll(checkedNode);
99+
} else {
100+
treeObj.checkAll(checkedNode);
101+
}
102+
}
103+
}
104+
105+
function onCreated() {
106+
var submitButton = new ej.buttons.Button();
107+
submitButton.appendTo('#submitButton');
108+
if (document.getElementById('submitButton')) {
109+
document.getElementById('submitButton').onclick = function () {
110+
columnChooserSubmit();
111+
};
112+
}
113+
var abortButton = new ej.buttons.Button();
114+
abortButton.appendTo('#abortButton');
115+
if (document.getElementById('abortButton')) {
116+
document.getElementById('abortButton').onclick = function () {
117+
var grid = document.getElementById("Grid").ej2_instances[0];
118+
grid.columnChooserModule.hideDialog();
119+
};
120+
}
121+
}
122+
function columnChooserSubmit() {
123+
var checkedElements = [];
124+
var uncheckedElements = [];
125+
var grid = document.getElementById("Grid").ej2_instances[0];
126+
var showColumns = grid.getVisibleColumns().filter(function (column) { return (column.showInColumnChooser === true); });
127+
showColumns = showColumns.map(function (col) { return col.headerText; });
128+
var treeItems = document.querySelectorAll('.e-list-item');
129+
treeItems.forEach(function (item) {
130+
var itemDetails = treeObj.getNode(item);
131+
if (!itemDetails.hasChildren) {
132+
if (item.getAttribute('aria-checked') === 'true') {
133+
checkedElements.push(itemDetails.text);
134+
} else {
135+
uncheckedElements.push(itemDetails.text);
136+
}
137+
}
138+
});
139+
showColumns = showColumns.filter(function (col) {
140+
return !uncheckedElements.includes(col);
141+
});
142+
checkedElements.forEach(function (item) {
143+
if (!showColumns.includes(item)) {
144+
showColumns.push(item);
145+
}
146+
});
147+
var columnsToUpdate = { visibleColumns: showColumns, hiddenColumns: uncheckedElements };
148+
grid.columnChooserModule.changeColumnVisibility(columnsToUpdate);
149+
}
150+
</script>

0 commit comments

Comments
 (0)