A quick start project for connecting a MySQL database to a Syncfusion Pivot Table. This repository includes a Web API Controller (MyWebService) for retrieving data from a MySQL database, as well as quick start samples in the TypeScript, JavaScript, Angular, React, VUE, ASP.NET Core, Blazor and MVC platforms that display the retrieved data in a Syncfusion Pivot Table.
- 🔎 Project Overview
- 🚀 Quick Start
- ✨ Key Features
- 🛠️ Supported Technologies & Requirements
- ⚙️ Installation & Setup (quick)
- 🧩 Quick Code Samples
- 🏗️ Project Structure
- ❓ Troubleshooting & FAQ
- 🧪 Testing & CI
- 🤝 Contributing
- 📜 License & Support
This repository shows how to expose MySQL query results via a Web API and bind the returned JSON to a Syncfusion Pivot Table (PivotView). It includes server-side (.NET) and client-side examples (JS/TS/Angular/React/Vue, plus ASP.NET Core, Blazor, MVC).
Real-world uses:
- Web BI dashboards
- Ad-hoc reporting and analytics
- Rapid prototyping of pivot-based UI
Prerequisites
- MySQL server with sample data
- .NET SDK 6.0+ (or matching project target)
- Node.js (for front-end samples)
- Syncfusion NuGet/npm packages
Run the Web API (MyWebService)
cd MyWebService
dotnet restore
dotnet run
# API runs on the configured port (see Properties/launchSettings.json)Run a front-end sample (choose one):
TypeScript
cd Typescript/pivot-table
npm install
npm startAngular
cd Angular/pivot-table
npm install
npm startReact
cd React/pivot-table
npm install
npm startVue
cd VUE/pivot-table
npm install
npm run devFirst success: Open the front-end sample URL (e.g., http://localhost:3000 or http://localhost:4200) and confirm the PivotView loads rows from the running Web API.
- Web API sample that returns MySQL query results as JSON (server-side .NET)
- Client demos for JavaScript, TypeScript, Angular, React, Vue
- ASP.NET Core, Blazor, and MVC integration examples
- appsettings.json example for secure DB connection configuration
- Minimal, copy-paste-ready snippets to initialize Syncfusion PivotView
- Framework-agnostic architecture for easy reuse
- Server: .NET (Core) — projects in MyWebService/*.csproj
- Database: MySQL
- Client: JavaScript / TypeScript; frameworks: Angular, React, Vue
- UI: Syncfusion EJ2 PivotView (Syncfusion packages required)
- Tooling: Node.js 14+, .NET SDK 6.0+ recommended
- Browsers: Modern browsers (Chrome, Edge, Firefox, Safari)
Suggested server deps:
- MySql.Data or MySqlConnector (for .NET)
- Microsoft.AspNetCore.App
Suggested client deps:
- @syncfusion/ej2-pivotview (or syncfusion ej2 equivalent)
- Build tools from each sample (npm, angular-cli, etc.)
Prereqs:
- MySQL server with sample data
- .NET SDK 6.0+ (or matching project target)
- Node.js 14+
- Syncfusion NuGet/npm packages
Steps:
- Clone:
git clone https://github.com/SyncfusionExamples/web-bind-MySQL-database-to-pivot-table.git cd web-bind-MySQL-database-to-pivot-table - Configure DB (MyWebService/Controllers/PivotController.cs):
public dynamic GetMySQLResult() { MySqlConnection connection = new MySqlConnection("<Enter your valid connection string here>"); }
- Run Web API:
cd MyWebService dotnet restore dotnet build dotnet run # API endpoints: http://localhost:5000/...
- Launch a client example (Typescript):
cd ../Typescript npm install npm start - Open the served client in your browser and confirm the PivotView loads.
- Minimal .NET Web API controller (Pivot data endpoint)
// Controllers/PivotController.cs
// ...existing code...
[ApiController]
[Route("[controller]")]
public class PivotController : ControllerBase
{
[HttpGet(Name = "GetMySQLResult")]
public object Get()
{
return JsonConvert.SerializeObject(GetMySQLResult());
}
public dynamic GetMySQLResult()
{
MySqlConnection connection = new MySqlConnection("<Enter your valid connection string here>");
connection.Open();
MySqlCommand command = new MySqlCommand("SELECT * FROM orders", connection);
MySqlDataAdapter dataAdapter = new MySqlDataAdapter(command);
DataTable dataTable = new DataTable();
dataAdapter.Fill(dataTable);
connection.Close();
return dataTable;
}
}
// ...existing code...- appsettings.json example
{
"ConnectionStrings": {
"MySqlConnection": "Server=localhost;Database=SalesDB;User=appuser;Password=secret;"
}
}- Vanilla JS: fetch + PivotView init
<!-- index.html -->
<div id="PivotView"></div>
<script src="https://cdn.syncfusion.com/ej2/32.1.19/dist/ej2.min.js"></script>
<script>
var pivotObj = new ej.pivotview.PivotView({
dataSourceSettings: {
url: 'https://localhost:xxxx/...',
},
showFieldList: true,
width: '100%',
height: 350,
});
pivotObj.appendTo('#PivotView');
</script>- TypeScript snippet
// src/index.ts
import { PivotView } from '@syncfusion/ej2-pivotview';
let pivotTableObj: PivotView = new PivotView({
dataSourceSettings: {
url: 'https://localhost:xxxx/....',
},
showFieldList: true,
width: '100%',
height: 350,
});
pivotTableObj.appendTo('#PivotTable');- MyWebService/ — .NET Web API that queries MySQL
- Controllers/ — API controllers (PivotDataController.cs)
- appsettings.json — DB connection example
- Typescript/, Javascript/, Angular/, React/, VUE/ — client examples
- Core/, Blazor/, MVC/ — server-side web samples
- LICENSE, README.md — repo metadata
- Empty results: verify DB schema/table and connection string.
- CORS errors: enable CORS in Startup/Program for client origin.
- Pivot mapping issues: ensure JSON keys match dataSource field names.
- Syncfusion package errors: confirm correct package versions and license.
- Add GitHub Actions to build the Web API and optionally run front-end builds per sample. Suggested jobs:
dotnet restore/dotnet build/dotnet testnpm ci/npm run buildfor front-end samples
Contributions welcome. Suggested workflow:
- Fork and create a branch
feature/<desc> - Run the Web API locally and test sample clients
- Open a PR with description, screenshots, and testing steps
This is a commercial product subject to the Syncfusion End User License Agreement (EULA).
Free Community License is available for qualifying users/organizations:
- Annual gross revenue < $1 million USD
- 5 or fewer total developers
- 10 or fewer total employees
The community license allows free use in both internal and commercial applications under these conditions.
No registration or approval is required — just comply with the terms.
Paid Licenses are required for:
- Larger organizations
- Teams exceeding the community license limits
- Priority support, custom patches, or on-premise deployment options
Purchase options and pricing: https://www.syncfusion.com/sales/products
30-day free trial (full features, no credit card required): https://www.syncfusion.com/downloads/essential-js2
Community License details & FAQ: https://www.syncfusion.com/products/communitylicense
Full EULA: https://www.syncfusion.com/eula/es/
© 2026 Syncfusion, Inc. All Rights Reserved.