From dfeca2946b7e6b87a7b0bf4abb6e1a8b1131c6cc Mon Sep 17 00:00:00 2001 From: Naveen Date: Wed, 28 Feb 2024 22:08:35 +0530 Subject: [PATCH 1/6] Documentation(870710)Microsoft-SQL-Data-Binding --- .../microsoft-sql-server.md | 1086 ++++++++--------- blazor/datagrid/images/Ms-Sql-data.png | Bin 61766 -> 94493 bytes .../images/blazor-Grid-Ms-SQL-databinding.png | Bin 52488 -> 53367 bytes 3 files changed, 528 insertions(+), 558 deletions(-) diff --git a/blazor/datagrid/connecting-to-database/microsoft-sql-server.md b/blazor/datagrid/connecting-to-database/microsoft-sql-server.md index 59a06a5761..58e4e90320 100644 --- a/blazor/datagrid/connecting-to-database/microsoft-sql-server.md +++ b/blazor/datagrid/connecting-to-database/microsoft-sql-server.md @@ -9,825 +9,795 @@ documentation: ug # Microsoft SQL Server Data Binding -This section describes how to use [System.Data.SqlClient](https://www.nuget.org/packages/System.Data.SqlClient/4.8.6?_src=template) to retrieve data from a Microsoft SQL server database and bind it to the Blazor DataGrid. +This section describes how to connect and retrieve data from a Microsoft SQL Server database using [System.Data.SqlClient](https://www.nuget.org/packages/System.Data.SqlClient/4.8.6?_src=template) and bind it to the Blazor DataGrid component. -Microsoft SQL database can be bound to the datagrid in different ways (i.e.) DataSource property, CustomAdaptor and Remote Databinding using various adaptors (WebAPI, OData, ODataV4, URLadaptor). Here listed two options are the most efficient and easily customizable approaches. [CustomAdaptor](https://blazor.syncfusion.com/documentation/datagrid/custom-binding) approach suitable to local binding and [URLAdaptor](https://blazor.syncfusion.com/documentation/data/adaptors#url-adaptor) suitable for remote data bidning. Both the approaches have capability to handle data and CRUD operations with built-in methods as well as can be customized as per your own. +Microsoft SQL Server database can be bound to the Blazor DataGrid in different ways (i.e.) [DataSource](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.SfGrid-1.html#Syncfusion_Blazor_Grids_SfGrid_1_DataSource) property, [CustomAdaptor](https://blazor.syncfusion.com/documentation/datagrid/custom-binding) and Remote data binding using various adaptors (Web API, OData, ODataV4, Url). In this documentation, two approaches will be examined to connect a Microsoft SQL Server database to a Blazor DataGrid component. Both the approaches have capability to handle data and CRUD operations with built-in methods as well as can be customized as per your own. -**Custom Adaptor** +* **Using UrlAdaptor** -A custom adaptor allows you to perform manual operations on the data. For implementing custom data binding in Grid, DataAdaptor class is used. It class acts as a base class and has both synchronous and asynchronous method signatures whcih can be overriden in **CustomAdaptor**. +In this approach, data can be bound to the Blazor DataGrid component by calling an existing pre-configured API service connected to the Microsoft SQL Server database. The Blazor DataGrid supports various adaptors to meet this requirement, such as [Web API](https://blazor.syncfusion.com/documentation/data/adaptors#web-api-adaptor), [OData](https://blazor.syncfusion.com/documentation/data/adaptors#odata-adaptor), [ODataV4](https://blazor.syncfusion.com/documentation/data/adaptors#odatav4-adaptor), [Url](https://blazor.syncfusion.com/documentation/data/adaptors#url-adaptor) and [GraphQL](https://blazor.syncfusion.com/documentation/data/adaptors#graphql-service-binding). Among these, the [UrlAdaptor](https://blazor.syncfusion.com/documentation/data/adaptors#url-adaptor) serves as the base adaptor for interacting with remote data services. Hence, this approach is selected to meet the requirement. It is important to note that the UrlAdaptor forwards all requests to an API service as **POST** requests. -**API Services with URL Adaptor** +* **Using CustomAdaptor** -Remotely database can be bound to grid using multiple adaptors namely WebAPI, OData, ODataV4 including the URLAdaptor. If you have pre configured API service following existing WebAPI standards, then WebAPI adaptor can be utilized to achieve your requirement. The URL adaptor send all requests to API service as a **POST** request. The UrlAdaptor acts as the base adaptor for interacting with remote data services. +The [CustomAdaptor](https://blazor.syncfusion.com/documentation/datagrid/custom-binding) allows you to perform manual operation on the data for every action performed in Blazor DataGrid component. The [DataAdaptor](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html) class is used to achieve the custom data binding in Blazor DataGrid. This class acts as a base class and has both synchronous and asynchronous method signatures which can be overridden in `CustomAdaptor`. -## Binding data from Microsoft SQL Server using Custom Adaptor +## Binding data from Microsoft SQL Server using an API service -**1.** Create a simple Blazor DataGrid by following the [Getting Started](https://blazor.syncfusion.com/documentation/datagrid/getting-started-with-web-app) documentation link. +### Creating an API service -**2.** To connect a Microsoft SQL using the Microsoft SQL driver in our application, you need to install the [System.Data.SqlClient](https://www.nuget.org/packages/System.Data.SqlClient/4.8.6?_src=template) NuGet package. To do so, open the NuGet package manager of the project solution, search for the package **System.Data.SqlClient** and install it. +**1.** Open Visual Studio and create an ASP.NET Core Web App project type, naming it **MyWebService**. To create an ASP.NET Core Web application, follow the documentation [link](https://learn.microsoft.com/en-us/visualstudio/get-started/csharp/tutorial-aspnet-core?view=vs-2022). -![Add the NuGet package System.Data.SqlClient to the project](../images/system-Data-sql-client-nuget-package-install.png) +**2.** To connect a Microsoft SQL Server using the Microsoft SQL driver in your application, you need to install the [System.Data.SqlClient](https://www.nuget.org/packages/System.Data.SqlClient/4.8.6?_src=template) NuGet package. To add **System.Data.SqlClient** in the app, open the NuGet package manager in Visual Studio (Tools → NuGet Package Manager → Manage NuGet Packages for Solution), search and install it. -**3.** Next, in the **Index.razor** page, get the SQL data from the SQL server and bind it to the DataGrid component as a datasource by using the [CustomAdaptor](https://blazor.syncfusion.com/documentation/datagrid/custom-binding) feature. +**3.** Create an API controller (aka, GridController.cs) file under **Controllers** folder that helps to establish data communication with the Blazor DataGrid. -{% tabs %} -{% highlight razor tabtitle="Index.razor" %} -@rendermode InteractiveServer +**4.** In an API controller (aka, GridController), connect to Microsoft SQL Server. In the **Get()** method **SqlConnection** helps to connect the Microsoft SQL Server database. Next, using **SqlCommand** and **SqlDataAdapter** you can process the desired SQL query string and retrieve data from the database. The **Fill** method of the **DataAdapter** is used to populate the SQL data into a **DataTable** as shown in the following code snippet. -@using Syncfusion.Blazor.Grids -@using Syncfusion.Blazor.Data -@using Syncfusion.Blazor -@using Microsoft.Data.SqlClient; +{% tabs %} +{% highlight razor tabtitle="GridController.cs"%} +using Microsoft.AspNetCore.Mvc; +using System.Data; +using System.Data.SqlClient; +using Syncfusion.Blazor; +using Syncfusion.Blazor.Data; +using System.ComponentModel.DataAnnotations; +using Newtonsoft.Json; +namespace MyWebService.Controllers +{ + [ApiController] + public class GridController : ControllerBase + { + public static List Orders { get; set; } - - - - - - - - - - + public class Order + { + [Key] + public int? OrderID { get; set; } + public string? CustomerID { get; set; } + public int? EmployeeID { get; set; } + public decimal? Freight { get; set; } + public string? ShipCity { get; set; } + } -@code { - SfGrid Grid { get; set; } + [Route("api/[controller]")] + public List GetOrderData() + { + string ConnectionString = @""; + string QueryStr = "SELECT * FROM dbo.Orders ORDER BY OrderID;"; + SqlConnection sqlConnection = new(ConnectionString); + sqlConnection.Open(); + SqlCommand SqlCommand = new(QueryStr, sqlConnection); + SqlDataAdapter DataAdapter = new(SqlCommand); + DataTable DataTable = new(); + DataAdapter.Fill(DataTable); + sqlConnection.Close(); + var DataSource = (from DataRow Data in DataTable.Rows + select new Order() + { + OrderID = Convert.ToInt32(Data["OrderID"]), + CustomerID = Data["CustomerID"].ToString(), + EmployeeID = Convert.IsDBNull(Data["EmployeeID"]) ? 0 : Convert.ToUInt16(Data["EmployeeID"]), + ShipCity = Data["ShipCity"].ToString(), + Freight = Convert.ToDecimal(Data["Freight"]) + }).ToList(); + return DataSource; + } + } } {% endhighlight %} -{% highlight razor tabtitle="Orderdata.cs"%} - public class Order - { - public int? OrderID { get; set; } - public string CustomerID { get; set; } - public int EmployeeID { get; set; } - public decimal Freight { get; set; } - public string ShipCity { get; set; } - } -{% endhighlight %} {% endtabs %} -**4.** Within the custom adaptor’s [ReadAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_ReadAsync_Syncfusion_Blazor_DataManagerRequest_System_String_) method, leverage the [DataManagerRequest](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataManagerRequest.html) to gather Grid action specifics such as paging, filtering, and sorting details. +**5.** Run the application and it will be hosted within the URL `https://localhost:xxxx`. + +**6.** Finally, the retrieved data from Microsoft SQL Server database which is in the form of JSON can be found in an API controller available in the URL link `https://localhost:xxxx/api/Grid`, as shown in the browser page below. -* Utilize the `DataManagerRequest` to formulate a SQL query string for paging purposes and execute the query. Fetch data from the database using the **SqlDataAdapter** class. +![Hosted API URL](../images/Ms-Sql-data.png) -* Employ the Fill method of the **DataAdapter** to populate a DataSet with the results of the `Select` command of the DataAdapter, followed by conversion of the DataSet into a List. +### Connecting Blazor DataGrid to an API service -* Finally, return the response as a `Result` and `Count` pair object in the **ReadAsync** method to bind the data to the DataGrid. +**1.** Create a simple Blazor DataGrid by following the [Getting Started](https://blazor.syncfusion.com/documentation/datagrid/getting-started-with-web-app) documentation link. In this Blazor web app, the `rendermode` is set as **InteractiveServer**. -{% tabs %} -{% highlight razor tabtitle="Index.razor" %} -@rendermode InteractiveServer +**2.** Map the hosted API's URL link `https://localhost:xxxx/api/Grid` to the Blazor DataGrid in **Index.razor** by using the [Url](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataManager.html#Syncfusion_Blazor_DataManager_Url) property of [SfDataManager](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Data.SfDataManager.html). To interact with remote data source, provide the endpoint `Url`. + +**3.** The `SfDataManager` offers multiple adaptor options to connect with remote database based on API services. Below is an example of the [UrlAdaptor](https://blazor.syncfusion.com/documentation/data/adaptors#url-adaptor) configuration where an API services are set up to return the resulting data in the `Result` and `Count` format. +**4.** The `UrlAdaptor` acts as the base adaptor for interacting with remote data services. Most of the built-in adaptors are derived from the `UrlAdaptor`. + +{% tabs %} +{% highlight razor tabtitle="Index.razor"%} @using Syncfusion.Blazor.Grids @using Syncfusion.Blazor.Data @using Syncfusion.Blazor @using Microsoft.Data.SqlClient; - - - + + + - - + + @code { - public class CustomAdaptor : DataAdaptor - { - public OrderData OrderService = new OrderData(); - // Performs data Read operation - public override async Task ReadAsync(DataManagerRequest DataManagerRequest, string key = null) - { - IEnumerable DataSource = await OrderService.GetOrdersAsync(); - int count = DataSource.Cast().Count(); - if (DataManagerRequest.Skip != 0) - { - //Paging - DataSource = DataOperations.PerformSkip(DataSource, DataManagerRequest.Skip); - } - if (DataManagerRequest.Take != 0) - { - DataSource = DataOperations.PerformTake(DataSource, DataManagerRequest.Take); - } - return DataManagerRequest.RequiresCounts ? new DataResult() { Result = DataSource, Count = count } : (object)DataSource; - } - } -} + SfGrid Grid { get; set; } + public List Orders { get; set; } -{% endhighlight %} -{% highlight razor tabtitle="Orderdata.cs" %} - public class OrderData - { - public async Task> GetOrdersAsync() - { - string connectionString = @""; - string QueryStr = "SELECT * FROM dbo.Orders ORDER BY OrderID;"; - List Orders = null; - using (SqlConnection connection = new SqlConnection(connectionString)) - { - SqlDataAdapter adapter = new SqlDataAdapter(QueryStr, connection); - DataSet data = new DataSet(); - connection.Open(); - // Using SqlDataAdapter, process the query string and fill the data into the dataset - adapter.Fill(data); - Orders = data.Tables[0].AsEnumerable().Select(r => new Order - { - OrderID = r.Field("OrderID"), - CustomerID = r.Field("CustomerID"), - EmployeeID = r.Field("EmployeeID"), - ShipCity = r.Field("ShipCity"), - Freight = r.Field("Freight") - }).ToList(); - connection.Close(); - } - return Orders; - } + public class Order + { + public int? OrderID { get; set; } + public string CustomerID { get; set; } + public int EmployeeID { get; set; } + public decimal Freight { get; set; } + public string ShipCity { get; set; } + } } {% endhighlight %} {% endtabs %} -> In the above grid, [AllowSearching](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridColumn.html#Syncfusion_Blazor_Grids_GridColumn_AllowSearching), [AllowSorting](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.SfGrid-1.html#Syncfusion_Blazor_Grids_SfGrid_1_AllowSorting), [AllowFiltering](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.SfGrid-1.html#Syncfusion_Blazor_Grids_SfGrid_1_AllowFiltering),[AllowPaging](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.SfGrid-1.html#Syncfusion_Blazor_Grids_SfGrid_1_AllowPaging), [AllowGrouping](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.SfGrid-1.html#Syncfusion_Blazor_Grids_SfGrid_1_AllowGrouping), and CRUD-related properties have been enabled. The details on how to handle these actions are explained below. - -When the application is executed, the grid will appear as depicted below. +> In the above Blazor DataGrid, [AllowSearching](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridColumn.html#Syncfusion_Blazor_Grids_GridColumn_AllowSearching), [AllowSorting](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.SfGrid-1.html#Syncfusion_Blazor_Grids_SfGrid_1_AllowSorting), [AllowFiltering](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.SfGrid-1.html#Syncfusion_Blazor_Grids_SfGrid_1_AllowFiltering), [AllowPaging](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.SfGrid-1.html#Syncfusion_Blazor_Grids_SfGrid_1_AllowPaging), [AllowGrouping](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.SfGrid-1.html#Syncfusion_Blazor_Grids_SfGrid_1_AllowGrouping) and CRUD-related properties have been enabled. The details on how to handle these actions are explained below. -![Blazor Grid bound with Microsoft SQL data](../images/blazor-Grid-Ms-SQL-databinding.png) +When you run the application, the resultant Blazor DataGrid will look like this -### Handling data operations +![Blazor DataGrid bound with Microsoft SQL Server data](../images/blazor-Grid-Ms-SQL-databinding.png) -The Syncfusion Grid component offers a range of powerful features for handling grid actions such as **searching**, **sorting**,**filtering**,**paging** and **grouping**. This ensures efficient data retrieval and manipulation, providing a better user experience. Below are explanations on how to handle these data operations effectively in Custom Adaptor: +> * The Syncfusion Blazor DataGrid component provides built-in support for handling various data operations, including **searching**, **sorting**, **filtering**, **paging**, and **grouping** on the server-side. These operations can be managed using methods such as `PerformSearching`, `PerformSorting`, `PerformFiltering`, `PerformTake`, and `PerformSkip` available in the **Syncfusion.Blazor.Data** package. Below, let's explore how to manage these data operations using the `UrlAdaptor`. +> * In an API service project, add **Syncfusion.Blazor.Data** in the app by opening the NuGet package manager in Visual Studio (Tools → NuGet Package Manager → Manage NuGet Packages for Solution), search and install it. -**Perform Searching:** +### Handling searching operation -When utlizing a custom adaptor, managing the searching operation ivolves overriding the [Read](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_Read_Syncfusion_Blazor_DataManagerRequest_System_String_) or [ReadAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_ReadAsync_Syncfusion_Blazor_DataManagerRequest_System_String_) method of the **DataAdaptor** abstract class. - -In the code example below, searching a custom data source can be accomplished by employing the built-in [PerformSearching](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html#Syncfusion_Blazor_DataOperations_PerformSearching_System_Collections_IEnumerable_System_Collections_Generic_List_Syncfusion_Blazor_Data_SearchFilter__) method of the [DataOperations](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html) class. Alternatively, you can implement your own method for searching operation and bind the resultant data to the grid. +To handle searching operation, ensure that your API endpoint supports custom searching criteria. Implement the searching logic on the server-side using the [PerformSearching](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html#Syncfusion_Blazor_DataOperations_PerformSearching__1_System_Collections_Generic_IEnumerable___0__System_Collections_Generic_List_Syncfusion_Blazor_Data_SearchFilter__) method from the [DataOperations](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html) class. This allows the custom data source to undergo searching based on the criteria specified in the incoming [DataManagerRequest](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataManagerRequest.html) object. {% highlight razor %} -public class CustomAdaptor : DataAdaptor + +[HttpPost] +[Route("api/[controller]")] +public object Post([FromBody] DataManagerRequest DataManagerRequest) { - public OrderData OrderService = new OrderData(); - // Performs data Read operation - public override async Task ReadAsync(DataManagerRequest DataManagerRequest, string key = null) + IEnumerable DataSource = GetOrderData(); + if (DataManagerRequest.Search != null && DataManagerRequest.Search.Count > 0) { - IEnumerable DataSource = await OrderService.GetOrdersAsync(); - if (DataManagerRequest.Search != null && DataManagerRequest.Search.Count > 0) - { - // Searching - DataSource = DataOperations.PerformSearching(DataSource, DataManagerRequest.Search); - } - int count = DataSource.Cast().Count(); - return DataManagerRequest.RequiresCounts ? new DataResult() { Result = DataSource, Count = count } : (object)DataSource; + // Searching + DataSource = DataOperations.PerformSearching(DataSource, DataManagerRequest.Search); } + int count = DataSource.Cast().Count(); + return new { result = DataSource, count = count }; } {% endhighlight %} -**Perform Sorting:** +### Handling filtering operation -When utlizing a custom adaptor, managing the sorting operation involves overriding the `Read` or `ReadAsync` method of the **DataAdaptor** abstract class. - -In the code example below, sorting a custom data source can be accomplished by employing the built-in [PerformSorting](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html#Syncfusion_Blazor_DataOperations_PerformSorting__1_System_Collections_Generic_IEnumerable___0__System_Collections_Generic_List_Syncfusion_Blazor_Data_Sort__) method of the `DataOperations` class. Alternatively, you can implement your own method for sorting operation and bind the resulting data to the grid. +To handle filtering operation, ensure that your API endpoint supports custom filtering criteria. Implement the filtering logic on the server-side using the [PerformFiltering](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html#Syncfusion_Blazor_DataOperations_PerformFiltering_System_Collections_IEnumerable_System_Collections_Generic_List_Syncfusion_Blazor_Data_WhereFilter__System_String_) method from the [DataOperations](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html) class. This allows the custom data source to undergo filtering based on the criteria specified in the incoming [DataManagerRequest](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataManagerRequest.html) object. {% highlight razor %} - - public class CustomAdaptor : DataAdaptor +[HttpPost] +[Route("api/[controller]")] +public object Post([FromBody] DataManagerRequest DataManagerRequest) { - public OrderData OrderService = new OrderData(); - // Performs data Read operation - public override async Task ReadAsync(DataManagerRequest DataManagerRequest, string key = null) + IEnumerable DataSource = GetOrderData(); + if (DataManagerRequest.Where != null && DataManagerRequest.Where.Count > 0) { - IEnumerable DataSource = await OrderService.GetOrdersAsync(); - if (DataManagerRequest.Sorted != null && DataManagerRequest.Sorted.Count > 0) - { - // Sorting - DataSource = DataOperations.PerformSorting(DataSource, DataManagerRequest.Sorted); - } - int count = DataSource.Cast().Count(); - return DataManagerRequest.RequiresCounts ? new DataResult() { Result = DataSource, Count = count } : (object)DataSource; + // Filtering + DataSource = DataOperations.PerformFiltering(DataSource, DataManagerRequest.Where, DataManagerRequest.Where[0].Operator); } + int count = DataSource.Cast().Count(); + return new { result = DataSource, count = count }; } {% endhighlight %} -**Perform Filtering:** - -When employing a custom adaptor, handling the filtering operation involves overriding the `Read` or `ReadAsync` method of the **DataAdaptor** abstract class. +### Handling sorting operation -In the code example below, filtering a custom data source can be achieved by utilizing the built-in [PerformFiltering](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html#Syncfusion_Blazor_DataOperations_PerformFiltering__1_System_Collections_Generic_IEnumerable___0__System_Collections_Generic_List_Syncfusion_Blazor_Data_WhereFilter__System_String_) method of the `DataOperations` class. Alternatively, you can implement your own method for filtering operations and bind the resulting data to the grid. +To handle sorting operation, ensure that your API endpoint supports custom sorting criteria. Implement the sorting logic on the server-side using the [PerformSorting](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html#Syncfusion_Blazor_DataOperations_PerformSorting__1_System_Collections_Generic_IEnumerable___0__System_Collections_Generic_List_Syncfusion_Blazor_Data_Sort__) method from the [DataOperations](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html) class. This allows the custom data source to undergo sorting based on the criteria specified in the incoming [DataManagerRequest](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataManagerRequest.html) object. {% highlight razor %} - - public class CustomAdaptor : DataAdaptor +[HttpPost] +[Route("api/[controller]")] +public object Post([FromBody] DataManagerRequest DataManagerRequest) { - public OrderData OrderService = new OrderData(); - // Performs data Read operation - public override async Task ReadAsync(DataManagerRequest DataManagerRequest, string key = null) + IEnumerable DataSource = GetOrderData(); + if (DataManagerRequest.Sorted != null && DataManagerRequest.Sorted.Count > 0) { - IEnumerable DataSource = await OrderService.GetOrdersAsync(); - if (DataManagerRequest.Where != null && DataManagerRequest.Where.Count > 0) - { - // Filtering - DataSource = DataOperations.PerformFiltering(DataSource, DataManagerRequest.Where, DataManagerRequest.Where[0].Operator); - } - int count = DataSource.Cast().Count(); - return DataManagerRequest.RequiresCounts ? new DataResult() { Result = DataSource, Count = count } : (object)DataSource; + // Sorting + DataSource = DataOperations.PerformSorting(DataSource, DataManagerRequest.Sorted); } + int count = DataSource.Cast().Count(); + return new { result = DataSource, count = count }; } - {% endhighlight %} -**Perform Paging:** - -When employing a custom adaptor, handling paging operation involves overriding the `Read` or `ReadAsync` method of the **DataAdaptor** abstract class. +### Handling paging operation -In the code example below, paging a custom data source can be achieved by utilizing the built-in [PerformTake](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html#Syncfusion_Blazor_DataOperations_PerformTake_System_Collections_IEnumerable_System_Int32_) and [PerformSkip](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html#Syncfusion_Blazor_DataOperations_PerformSkip__1_System_Collections_Generic_IEnumerable___0__System_Int32_) method of the `DataOperations` class. Alternatively, you can use your own method for paging operation and bind the resulting data to the grid. +To handle paging operation, ensure that your API endpoint supports custom paging criteria. Implement the paging logic on the server-side using the [PerformTake](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html#Syncfusion_Blazor_DataOperations_PerformTake_System_Collections_IEnumerable_System_Int32_) and [PerformSkip](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html#Syncfusion_Blazor_DataOperations_PerformSkip__1_System_Collections_Generic_IEnumerable___0__System_Int32_) method from the [DataOperations](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html) class. This allows the custom data source to undergo paging based on the criteria specified in the incoming [DataManagerRequest](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataManagerRequest.html) object. {% highlight razor %} - -public class CustomAdaptor : DataAdaptor +[HttpPost] +[Route("api/[controller]")] +public object Post([FromBody] DataManagerRequest DataManagerRequest) { - public OrderData OrderService = new OrderData(); - // Performs data Read operation - public override async Task ReadAsync(DataManagerRequest DataManagerRequest, string key = null) + IEnumerable DataSource = GetOrderData(); + int count = DataSource.Cast().Count(); + if (DataManagerRequest.Skip != 0) { - IEnumerable DataSource = await OrderService.GetOrdersAsync(); - int count = DataSource.Cast().Count(); - if (DataManagerRequest.Skip != 0) - { - //Paging - DataSource = DataOperations.PerformSkip(DataSource, DataManagerRequest.Skip); - } - if (DataManagerRequest.Take != 0) - { - DataSource = DataOperations.PerformTake(DataSource, DataManagerRequest.Take); - } - return DataManagerRequest.RequiresCounts ? new DataResult() { Result = DataSource, Count = count } : (object)DataSource; + // Paging + DataSource = DataOperations.PerformSkip(DataSource, DataManagerRequest.Skip); + } + if (DataManagerRequest.Take != 0) + { + DataSource = DataOperations.PerformTake(DataSource, DataManagerRequest.Take); } + return new { result = DataSource, count = count }; } {% endhighlight %} -**Perform Grouping:** - -When employing Custom Adaptor, the grouping operation must be managed wihtin the `Read` or `ReadAsync` method of the Custom adaptor. +### Handling grouping operation -The provided sample code illustrated how to implement the grouping operation wihtin in Custom Adaptor, +To handle grouping operation, ensure that your API endpoint supports custom grouping criteria. Implement the grouping logic on the server-side using the `Group` method from the [DataUtil](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Data.DataUtil.html) class. This allows the custom data source to undergo grouping based on the criteria specified in the incoming [DataManagerRequest](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataManagerRequest.html) object. {% highlight razor %} -public class CustomAdaptor : DataAdaptor +[HttpPost] +[Route("api/[controller]")] +public object Post([FromBody] DataManagerRequest DataManagerRequest) { - public OrderData OrderService = new OrderData(); - // Performs data Read operation - public override async Task ReadAsync(DataManagerRequest DataManagerRequest, string key = null) + IEnumerable DataSource = GetOrderData(); + int count = DataSource.Cast().Count(); + DataResult DataObject = new DataResult(); + if (DataManagerRequest.Group != null) { - IEnumerable DataSource = await OrderService.GetOrdersAsync(); - int count = DataSource.Cast().Count(); - DataResult DataObject = new DataResult(); - if (DataManagerRequest.Group != null) + System.Collections.IEnumerable ResultData = DataSource.ToList(); + // Grouping + foreach (var group in DataManagerRequest.Group) { - IEnumerable ResultData = DataSource.ToList(); - // Grouping - foreach (var group in DataManagerRequest.Group) - { - ResultData = DataUtil.Group(ResultData, group, DataManagerRequest.Aggregates, 0, DataManagerRequest.GroupByFormatter); - } - DataObject.Result = ResultData; - DataObject.Count = count; - return DataManagerRequest.RequiresCounts ? DataObject : (object)ResultData; + ResultData = DataUtil.Group(ResultData, group, DataManagerRequest.Aggregates, 0, DataManagerRequest.GroupByFormatter); } - return DataManagerRequest.RequiresCounts ? new DataResult() { Result = DataSource, Count = count } : (object)DataSource; + DataObject.Result = ResultData; + DataObject.Count = count; + return DataManagerRequest.RequiresCounts ? DataObject : (object)ResultData; } + return new { result = DataSource, count = count }; } {% endhighlight %} -> For optimal performance, it is recommended to follow this sequence of operations(Searching, Filtering, Sorting, Paging, Grouping) in the `ReadAsync` method +> For optimal performance, it is recommended to follow this sequence of operations(Searching, Filtering, Sorting, Paging, Grouping) in the [ReadAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_ReadAsync_Syncfusion_Blazor_DataManagerRequest_System_String_) method. -### Handling CRUD operations +### Handling CRUD operations -To enable editing in the grid component, utilize the [GridEditSettings](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridEditSettings.html) component. The grid offers multiple editing modes including the Inline/Normal, Dialog and Batch editing. For more details, refer to the grid [editing](https://blazor.syncfusion.com/documentation/datagrid/editing) documentation. +To enable editing in this Blazor DataGrid component, utilize the [GridEditSettings](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridEditSettings.html) component. The Blazor DataGrid offers multiple edit modes including the [Inline/Normal](https://blazor.syncfusion.com/documentation/datagrid/in-line-editing), [Dialog](https://blazor.syncfusion.com/documentation/datagrid/dialog-editing), and [Batch](https://blazor.syncfusion.com/documentation/datagrid/batch-editing) editing. For more details, refer to the Blazor DataGrid [editing](https://blazor.syncfusion.com/documentation/datagrid/editing) documentation. -In this scenario, the inline edit mode and [Toolbar](https://blazor.syncfusion.com/documentation/datagrid/tool-bar) property configured to dispaly toolbar items for editing pruposes. +In this scenario, the inline edit mode and [Toolbar](https://blazor.syncfusion.com/documentation/datagrid/tool-bar) property are configured to display toolbar items for editing purposes. +{% tabs %} {% highlight razor %} - - - + + + + + + + + + + - {% endhighlight %} +{% endtabs %} -> * Normal editing is the default edit mode for the DataGrid component. To enable CRUD operations, ensure that the [IsPrimaryKey](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridColumn.html#Syncfusion_Blazor_Grids_GridColumn_IsPrimaryKey) property is set to **true** for a specific GridColumn, ensuring that its value is unique. -> * If database have AutoGenerated column, kinldy ensure to define [IsIdentity](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridColumn.html#Syncfusion_Blazor_Grids_GridColumn_IsIdentity) property of GridColumn to disable them while adding or editing operations. - -The CRUD operations can be performed and customized on our own by overriding the following CRUD methods of the **DataAdaptor** abstract class. - -* Insert/InsertAsync -* Remove/RemoveAsync -* Update/UpdateAsync -* BatchUpdate/BatchUpdateAsync - -Let’s see how to perform CRUD operation using SQL server data with Syncfusion Blazor DataGrid component. +> * Normal editing is the default edit mode for the Blazor DataGrid component. To enable CRUD operations, ensure that the [IsPrimaryKey](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridColumn.html#Syncfusion_Blazor_Grids_GridColumn_IsPrimaryKey) property is set to **true** for a specific `GridColumn`, ensuring that its value is unique. +> * If database has an Autogenerated column, ensure to define [IsIdentity](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridColumn.html#Syncfusion_Blazor_Grids_GridColumn_IsIdentity) property of `GridColumn` to disable them during adding or editing operations. **Insert Operation:** -To execute the insert operation, you will need to override the [Insert](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_Insert_Syncfusion_Blazor_DataManager_System_Object_System_String_) or [InsertAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_InsertAsync_Syncfusion_Blazor_DataManager_System_Object_System_String_) method of the custom adaptor. Then, integrate the following code snippet into the **CustomAdaptor** class. The above code snippet demonstrated how to handle the insertion of new records within the `InsertAsync` method of CustomAdaptor component. Adjust the login inside this method as per your application requirements. +To insert a new row, simply click the **Add** toolbar button. The new record edit form will be displayed as shown below. Upon clicking the **Update** toolbar button, record will inserted into in the Orders table by calling the following **POST** method of an API. {% tabs %} -{% highlight razor tabtitle="Index.razor"%} - -public override async Task InsertAsync(DataManager DataManager, object Value, string Key) -{ - //Add your insert logic here - //This method will be invoked when inserting new records into the grid. - await OrderService.AddOrderAsync(Value as Order); - return Value; -} - -{% endhighlight %} -{% highlight razor tabtitle="Orderdata.cs"%} - public async Task AddOrderAsync(Order Value) +{% highlight c# tabtitle="OrdersController.cs" %} + [HttpPost] +[Route("api/Grid/Insert")] +public void Insert([FromBody] CRUDModel Value) { - string ConnectionString = $""; - string Query = $"Insert into Orders(CustomerID,Freight,ShipCity,EmployeeID) values('{(Value as Order).CustomerID}','{(Value as Order).Freight}','{(Value as Order).ShipCity}','{(Value as Order).EmployeeID}')"; - SqlConnection Connection = new SqlConnection(ConnectionString); - Connection.Open(); - SqlCommand Command = new SqlCommand(Query, Connection); - Command.ExecuteNonQuery(); - Connection.Close(); + string ConnectionString = @""; + string Query = $"Insert into Orders(CustomerID,Freight,ShipCity,EmployeeID) values('{Value.Value.CustomerID}','{Value.Value.Freight}','{Value.Value.ShipCity}','{Value.Value.EmployeeID}')"; + SqlConnection SqlConnection = new SqlConnection(ConnectionString); + SqlConnection.Open(); + SqlCommand SqlCommand = new SqlCommand(Query, SqlConnection); + SqlCommand.ExecuteNonQuery(); + SqlConnection.Close(); } {% endhighlight %} {% endtabs %} **Update Operation:** -To execute the Update operation, override the [Update](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_Update_Syncfusion_Blazor_DataManager_System_Object_System_String_System_String_) or [UpdateAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_UpdateAsync_Syncfusion_Blazor_DataManager_System_Object_System_String_System_String_) method of the custom adaptor. Then, integrate the following code snippet into the **CustomAdaptor** class. This code snippet demonstrated how to handle the updating of existing records within the `UpdateAsync` method of the CustomAdaptor component. Adjust the login insdie this method as per your application requirements. +To edit a row, first select desired row and click the **Edit** toolbar button. The edit form will be displayed as shown below and proceed to modify the any column value as per your requirement. Clicking the **Update** toolbar button will update the edit record in the Orders table by involving the following **Post** method of an API. {% tabs %} -{% highlight razor tabtitle="Index.razor"%} - -// Performs Update operation - public override async Task UpdateAsync(DataManager DataManager, object Value, string keyField, string key) - { - //Add your update logic here - //This method will be invoked when updating existing in the grid. - await OrderService.UpdateOrderAsync(Value as Order); - return Value; - } -{% endhighlight %} -{% highlight razor tabtitle="Orderdata.cs"%} - public async Task UpdateOrderAsync(Order Value) +{% highlight c# tabtitle="OrdersController.cs" %} +[HttpPost] +[Route("api/Grid/Update")] +public void Update([FromBody] CRUDModel Value) { - string ConnectionString = $""; - SqlConnection Connection = new SqlConnection(ConnectionString); - Connection.Open(); - SqlCommand Command = new SqlCommand(Query, Connection); - Command.ExecuteNonQuery(); - Connection.Close(); + string ConnectionString = @""; + string Query = $"Update Orders set CustomerID='{Value.Value.CustomerID}', Freight='{Value.Value.Freight}', EmployeeID='{Value.Value.EmployeeID}', ShipCity='{Value.Value.ShipCity}' where OrderID='{Value.Value.OrderID}'"; + SqlConnection SqlConnection = new SqlConnection(ConnectionString); + SqlConnection.Open(); + SqlCommand SqlCommand = new SqlCommand(Query, SqlConnection); + SqlCommand.ExecuteNonQuery(); + SqlConnection.Close(); } {% endhighlight %} {% endtabs %} **Delete Operation:** -To Perform the delete operation, you need to override the Remove(https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_Remove_Syncfusion_Blazor_DataManager_System_Object_System_String_System_String_) or RemoveAsync(https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_RemoveAsync_Syncfusion_Blazor_DataManager_System_Object_System_String_System_String_) method of the custom adaptor. Below is the code snippet that you can add to **CustomAdaptor** class. This code snippet demonstrated how to handle the deletion of existing records within the `RemoveAsync` method of custom adaptor component. Adjust the logic inside this method according to your application requirements. +To delete a row, simply select the desired row and click the **Delete** toolbar button. This action will trigger a **DELETE** request to an API, containing the primary key value of the selected record. As a result corresponding record will be removed from the Orders table. {% tabs %} -{% highlight razor tabtitle="Index.razor"%} - - public override async Task RemoveAsync(DataManager DataManager, object Value, string keyField, string key) +{% highlight c# tabtitle="OrdersController.cs" %} + [HttpPost] + [Route("api/Grid/Delete")] + public void Delete([FromBody] CRUDModel Value) { - //Add your delete logic here - //This method will be invoked when deleting existing records from the grid. - await OrderService.RemoveOrderAsync(Value as int?); - return Value; + string ConnectionString = @""; + string Query = $"Delete from Orders where OrderID={Value.Key}"; + SqlConnection SqlConnection = new SqlConnection(ConnectionString); + SqlConnection.Open(); + SqlCommand SqlCommand = new SqlCommand(Query, SqlConnection); + SqlCommand.ExecuteNonQuery(); + SqlConnection.Close(); } {% endhighlight %} -{% highlight razor tabtitle="Orderdata.cs"%} - public async Task RemoveOrderAsync(int? Key) - { - string ConnectionString = $""; - string Query = $"Delete from Orders where OrderID={Key}"; - SqlConnection Connection = new SqlConnection(ConnectionString); - Connection.Open(); - SqlCommand Command = new SqlCommand(Query, Connection); - Command.ExecuteNonQuery(); - Connection.Close(); - } -{% endhighlight %} {% endtabs %} **Batch Operation** -To Perform the Batch operation, override the [BatchUpdate](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_BatchUpdate_Syncfusion_Blazor_DataManager_System_Object_System_Object_System_Object_System_String_System_String_System_Nullable_System_Int32__) or [BatchUpdateAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_BatchUpdateAsync_Syncfusion_Blazor_DataManager_System_Object_System_Object_System_Object_System_String_System_String_System_Nullable_System_Int32__) method of the custom adaptor and add the following code in the custom adaptor. +To perform batch operations, define the edit [Mode](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridEditSettings.html#Syncfusion_Blazor_Grids_GridEditSettings_Mode) as `Batch` and specify the [BatchUrl](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataManager.html#Syncfusion_Blazor_DataManager_BatchUrl) property in the `SfDataManager`. Use the **Add** toolbar button to insert new row in batch editing mode. To edit a cell, double-click the desired cell and update the value as required. To delete a record, simply select the record and press the **Delete** toolbar button. Now, all CRUD operations will be executed in batch editing mode. Clicking the **Update** toolbar button will update the newly added, edited, or deleted records from the Orders table using a single API **POST** request. {% highlight razor %} // Performs BatchUpdate operation - public override async Task BatchUpdateAsync(DataManager DataManager, object Changed, object Added, object Deleted, string KeyField, string Key, int? dropIndex) - { - if (Changed != null) - { - foreach (var record in (IEnumerable)Changed) - { - await OrderService.UpdateOrderAsync(record as Order); - } - } - if (Added != null) - { - foreach (var record in (IEnumerable)Added) - { - await OrderService.AddOrderAsync(record as Order); - } - } - if (Deleted != null) - { - foreach (var record in (IEnumerable)Deleted) - { - await OrderService.RemoveOrderAsync((record as Order).OrderID); - } - } - return Key; - } +[HttpPost] +[Route("api/Grid/Batch")] +public void Batch([FromBody] CRUDModel Value) +{ + if (Value.Changed != null) + { + foreach (var record in (IEnumerable)Value.Changed) + { + //update in your database + } + } + if (Value.Added != null) + { + foreach (var record in (IEnumerable)Value.Added) + { + //Insert in your database + } + } + if (Value.Deleted != null) + { + foreach (var record in (IEnumerable)Value.Deleted) + { + //remove the records from your database + } + } +} {% endhighlight %} -> You can find the sample in this [GitHub location](https://github.com/SyncfusionExamples/blazor-grid-mssql-connectivity-using-custom-adaptor). +> Find the sample from this [Github location](https://github.com/SyncfusionExamples/blazor-grid-mssql-connectivity-using-api-service). -## Binding data from Microsoft SQL Server using an API service +## Binding data from Microsoft SQL Server using CustomAdaptor -### Creating an API service +**1.** Create a simple Blazor DataGrid by following the [Getting Started](https://blazor.syncfusion.com/documentation/datagrid/getting-started-with-web-app) documentation link. In this Blazor web app, the `rendermode` is set as **InteractiveServer**. -**1.** Open Visual Studio and create an ASP.NET Core Web App project type, naming it **MyWebService**. To create an ASP.NET Core Web application, follow the documentation [link](https://learn.microsoft.com/en-us/visualstudio/get-started/csharp/tutorial-aspnet-core?view=vs-2022). - -![Create ASP.NET Core Web App project](../images/azure-asp-core-web-service-create.png) +**2.** To connect a Microsoft SQL Server using the Microsoft SQL driver in your application, you need to install the [System.Data.SqlClient](https://www.nuget.org/packages/System.Data.SqlClient/4.8.6?_src=template) NuGet package. To do this, open the NuGet package manager of the project solution, search for the package **System.Data.SqlClient**, and proceed with the installation. -**2.** To connect a Microsoft SQL using the **System.Data.SqlClient** in our application, we need to install the [System.Data.SqlClient](https://www.nuget.org/packages/System.Data.SqlClient/4.8.6?_src=template) NuGet package. To do so, open the NuGet package manager of the project solution, search for the package **System.Data.SqlClient** and install it. +**3.** To inject your service into a `CustomAdaptor` and utilize it, you can meet your requirements using the following approach. -![Add the NuGet package Sytem.Data.SqlClient to the project](../images/system-Data-sql-client-nuget-package-install.png) +{% tabs %} +{% highlight razor tabtitle="Index.razor" %} +@rendermode InteractiveServer -**3.** Create a API controller (aka, GridController.cs) file under **Controllers** folder that helps to establish data communication with the DataGrid. +@using Syncfusion.Blazor.Grids +@using Syncfusion.Blazor.Data +@using Syncfusion.Blazor +@using Microsoft.Data.SqlClient; -**4.** In the API controller (aka, GridController), connect to Microsoft SQL server. In the **Get()** method **SqlConnection** helps to connect the SQL database (that is, Database1.mdf). Next, using **SqlCommand** and **SqlDataAdapter** you can process the desired SQL query string and retrieve data from the database. The **Fill** method of the DataAdapter is used to populate the SQL data into a **DataTable** as shown in the following code snippet. + + + + + + + + + + + -{% tabs %} -{% highlight razor tabtitle="GridController.cs"%} -using Microsoft.AspNetCore.Mvc; -using System.Data; -using System.Data.SqlClient; -using Syncfusion.Blazor; -using Syncfusion.Blazor.Data; -using System.ComponentModel.DataAnnotations; -using Newtonsoft.Json; -namespace MyWebService.Controllers -{ - [ApiController] - public class GridController : ControllerBase - { - public static List Orders { get; set; } - public class Order - { - [Key] - public int? OrderID { get; set; } - public string? CustomerID { get; set; } - public int? EmployeeID { get; set; } - public decimal? Freight { get; set; } - public string? ShipCity { get; set; } - } - [Route("api/[controller]")] - public List GetOrderData() - { - string ConnectionString = @""; - string QueryStr = "SELECT * FROM dbo.Orders ORDER BY OrderID;"; - SqlConnection sqlConnection = new(ConnectionString); - sqlConnection.Open(); - SqlCommand SqlCommand = new(QueryStr, sqlConnection); - SqlDataAdapter DataAdapter = new(SqlCommand); - DataTable DataTable = new(); - DataAdapter.Fill(DataTable); - sqlConnection.Close(); - var DataSource = (from DataRow Data in DataTable.Rows - select new Order() - { - OrderID = Convert.ToInt32(Data["OrderID"]), - CustomerID = Data["CustomerID"].ToString(), - EmployeeID = Convert.IsDBNull(Data["EmployeeID"]) ? 0 : Convert.ToUInt16(Data["EmployeeID"]), - ShipCity = Data["ShipCity"].ToString(), - Freight = Convert.ToDecimal(Data["Freight"]) - }).ToList(); - return DataSource; - } - } +@code { + SfGrid Grid { get; set; } } {% endhighlight %} -{% endtabs %} - -**5.** Run the application and it will be hosted within the URL `https://localhost:xxxx`. - -**6.** Finally, the retrieved data from Microsoft SQL database which is in the form of JSON can be found in the API controller available in the URL link `https://localhost:xxxx/api/Grid`, as shown in the browser page below. - -![Hosted API URL](../images/Ms-Sql-data.png) +{% highlight razor tabtitle="Orderdata.cs"%} + public class Order + { + public int? OrderID { get; set; } + public string CustomerID { get; set; } + public int EmployeeID { get; set; } + public decimal Freight { get; set; } + public string ShipCity { get; set; } + } +{% endhighlight %} +{% endtabs %} -### Connecting Grid to an API service -**1.** Create a simple Blazor Grid by following the [Getting Started](https://blazor.syncfusion.com/documentation/datagrid/getting-started-with-web-app) documentation link. +**4.** Within the CustomAdaptor’s [ReadAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_ReadAsync_Syncfusion_Blazor_DataManagerRequest_System_String_) method, fetch the data from the service by calling the `GetOrdersAsync` method. -**2.** Map the hosted API's URL link `https://localhost:xxxx/api/Grid` to the Grid in **Index.razor** by using the [Url](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataManager.html#Syncfusion_Blazor_DataManager_Url) property of [SfDataManager](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Data.SfDataManager.html). To interact with remote data source, provide the endpoint **Url**. +* In this `GetOrdersAsync` method, the Microsoft SQL Server database data is fetch by using the **SqlDataAdapter** class. -**3.** The `SfDataManager` offers mulitple adaptor options to connect with remote datasource based on API services. Below demonstrated is the `URLAdaptor` where API services is configured to return the resuting data in `Result` and `Count` format. +* Employ the **Fill** method of the **DataAdapter** to populate a **DataSet** with the results of the `Select` command of the **DataAdapter**, followed by conversion of the **DataSet** into a List. -**4.** The `UrlAdaptor` acts as the base adaptor for interacting with remote data services. Most of the built-in adaptors are derived from the `UrlAdaptor`. +* Finally, return the response as a `Result` and `Count` pair object in the `ReadAsync` method to bind the data to the Blazor DataGrid component. {% tabs %} -{% highlight razor tabtitle="Index.razor"%} +{% highlight razor tabtitle="Index.razor" %} +@rendermode InteractiveServer + @using Syncfusion.Blazor.Grids @using Syncfusion.Blazor.Data @using Syncfusion.Blazor @using Microsoft.Data.SqlClient; - - - + + + - - + + @code { - SfGrid Grid { get; set; } - public List Orders { get; set; } - - public class Order + public class CustomAdaptor : DataAdaptor { - public int? OrderID { get; set; } - public string CustomerID { get; set; } - public int EmployeeID { get; set; } - public decimal Freight { get; set; } - public string ShipCity { get; set; } + public OrderData OrderService = new OrderData(); + // Performs data read operation + public override async Task ReadAsync(DataManagerRequest DataManagerRequest, string key = null) + { + IEnumerable DataSource = await OrderService.GetOrdersAsync(); + int count = DataSource.Cast().Count(); + return DataManagerRequest.RequiresCounts ? new DataResult() { Result = DataSource, Count = count } : (object)DataSource; + } + } +} +{% endhighlight %} +{% highlight razor tabtitle="OrderData.cs" %} +public class OrderData +{ + public async Task> GetOrdersAsync() + { + string connectionString = @""; + string QueryStr = "SELECT * FROM dbo.Orders ORDER BY OrderID;"; + List Orders = null; + using (SqlConnection connection = new SqlConnection(connectionString)) + { + SqlDataAdapter adapter = new SqlDataAdapter(QueryStr, connection); + DataSet data = new DataSet(); + connection.Open(); + // Using SqlDataAdapter, process the query string and fill the data into the dataset + adapter.Fill(data); + Orders = data.Tables[0].AsEnumerable().Select(r => new Order + { + OrderID = r.Field("OrderID"), + CustomerID = r.Field("CustomerID"), + EmployeeID = r.Field("EmployeeID"), + ShipCity = r.Field("ShipCity"), + Freight = r.Field("Freight") + }).ToList(); + connection.Close(); + } + return Orders; } } {% endhighlight %} {% endtabs %} -> In the above grid, `AllowSearching`, `AllowSorting`, `AllowFiltering`,`AllowPaging`, `AllowGrouping`, and CRUD-related properties have been enabled. The details on how to handle these actions are explained below. +> * The `DataManagerRequest` encompasses details about the Blazor DataGrid actions such as searching, filtering, sorting, paging and grouping. +> * In the above Blazor DataGrid, [AllowSearching](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridColumn.html#Syncfusion_Blazor_Grids_GridColumn_AllowSearching), [AllowSorting](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.SfGrid-1.html#Syncfusion_Blazor_Grids_SfGrid_1_AllowSorting), [AllowFiltering](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.SfGrid-1.html#Syncfusion_Blazor_Grids_SfGrid_1_AllowFiltering), [AllowPaging](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.SfGrid-1.html#Syncfusion_Blazor_Grids_SfGrid_1_AllowPaging), [AllowGrouping](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.SfGrid-1.html#Syncfusion_Blazor_Grids_SfGrid_1_AllowGrouping) and CRUD-related properties have been enabled. The details on how to handle these actions are explained below. -When you run the application, the resultant Grid will look like this +When the application is executed, the Blazor DataGrid will appear as depicted below. -![Blazor Grid bound with Microsoft SQL data](../images/blazor-Grid-Ms-SQL-databinding.png) +![Blazor DataGrid bound with Microsoft SQL Server data](../images/blazor-Grid-Ms-SQL-databinding.png) -### Handling data operations +### Handling searching operation -The Syncfusion Grid component provides built-in support for handling various data operations, including **searching**, **sorting**, **filtering**, **paging**, and **grouping**, on the server-side. These operations can be effectively managed using methods such as `PerformSearching`, `PerformSorting`, `PerformFiltering`, `PerformTake`, and `PerformSkip`, available in the **Syncfusion.Blazor.Data** package. By utilizing these methods, efficient data retrieval and manipulation are ensured, resulting in an enhanced user experience. Below, we'll delve into how to effectively handle these data operations using the Url Adaptor. +When utilizing the `CustomAdaptor`, managing the searching operation involves overriding the [Read](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_Read_Syncfusion_Blazor_DataManagerRequest_System_String_) or [ReadAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_ReadAsync_Syncfusion_Blazor_DataManagerRequest_System_String_) method of the [DataAdaptor](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html) abstract class. -> Ensure to refer** Syncfusion.Blazor.Data** nuget package in an API service project - -**Perform Searching:** - -To handle searching operations, ensure that your API endpoint supports custom searching criteria. Implement the searching logic on the server-side using the [PerformSearching](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html#Syncfusion_Blazor_DataOperations_PerformSearching__1_System_Collections_Generic_IEnumerable___0__System_Collections_Generic_List_Syncfusion_Blazor_Data_SearchFilter__) method from the [DataOperations](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html) class. This allows the custom data source to undergo searching based on the criteria specified in the incoming **DataManagerRequest** object. +In the code example below, searching a custom data source can be accomplished by employing the built-in [PerformSearching](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html#Syncfusion_Blazor_DataOperations_PerformSearching_System_Collections_IEnumerable_System_Collections_Generic_List_Syncfusion_Blazor_Data_SearchFilter__) method of the [DataOperations](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html) class. Alternatively, you can implement your own method for searching operation and bind the resultant data to the Blazor DataGrid. {% highlight razor %} - - [HttpPost] -[Route("api/[controller]")] - public object Post([FromBody] DataManagerRequest DataManagerRequest) +public class CustomAdaptor : DataAdaptor +{ + public OrderData OrderService = new OrderData(); + // Performs data read operation + public override async Task ReadAsync(DataManagerRequest DataManagerRequest, string key = null) { - IEnumerable DataSource = GetOrderData(); + IEnumerable DataSource = await OrderService.GetOrdersAsync(); if (DataManagerRequest.Search != null && DataManagerRequest.Search.Count > 0) { // Searching DataSource = DataOperations.PerformSearching(DataSource, DataManagerRequest.Search); } int count = DataSource.Cast().Count(); - return new { result = DataSource, count = count }; + return DataManagerRequest.RequiresCounts ? new DataResult() { Result = DataSource, Count = count } : (object)DataSource; } - +} {% endhighlight %} -**Perform Sorting:** +### Handling filtering operation + +When employing the `CustomAdaptor`, handling the filtering operation involves overriding the [Read](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_Read_Syncfusion_Blazor_DataManagerRequest_System_String_) or [ReadAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_ReadAsync_Syncfusion_Blazor_DataManagerRequest_System_String_) method of the [DataAdaptor](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html) abstract class. -To handle sorting operations, ensure that your API endpoint supports custom sorting criteria. Implement the sorting logic on the server-side using the [PerformSorting](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html#Syncfusion_Blazor_DataOperations_PerformSorting__1_System_Collections_Generic_IEnumerable___0__System_Collections_Generic_List_Syncfusion_Blazor_Data_Sort__) method from the `DataOperations` class. This allows the custom data source to undergo sorting based on the criteria specified in the incoming **DataManagerRequest** object. +In the code example below, filtering a custom data source can be achieved by utilizing the built-in [PerformFiltering](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html#Syncfusion_Blazor_DataOperations_PerformFiltering__1_System_Collections_Generic_IEnumerable___0__System_Collections_Generic_List_Syncfusion_Blazor_Data_WhereFilter__System_String_) method of the [DataOperations](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html) class. Alternatively, you can implement your own method for filtering operations and bind the resulting data to the Blazor DataGrid. {% highlight razor %} - [HttpPost] - [Route("api/[controller]")] - public object Post([FromBody] DataManagerRequest DataManagerRequest) - { - IEnumerable DataSource = GetOrderData(); - if (DataManagerRequest.Sorted != null && DataManagerRequest.Sorted.Count > 0) - { - // Sorting - DataSource = DataOperations.PerformSorting(DataSource, DataManagerRequest.Sorted); - } - int count = DataSource.Cast().Count(); - return new { result = DataSource, count = count }; - } +public class CustomAdaptor : DataAdaptor +{ + public OrderData OrderService = new OrderData(); + // Performs data read operation + public override async Task ReadAsync(DataManagerRequest DataManagerRequest, string key = null) + { + IEnumerable DataSource = await OrderService.GetOrdersAsync(); + if (DataManagerRequest.Where != null && DataManagerRequest.Where.Count > 0) + { + // Filtering + DataSource = DataOperations.PerformFiltering(DataSource, DataManagerRequest.Where, DataManagerRequest.Where[0].Operator); + } + int count = DataSource.Cast().Count(); + return DataManagerRequest.RequiresCounts ? new DataResult() { Result = DataSource, Count = count } : (object)DataSource; + } +} {% endhighlight %} -**Perform Filtering:** +### Handling sorting operation + +When utilizing the `CustomAdaptor`, managing the sorting operation involves overriding the [Read](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_Read_Syncfusion_Blazor_DataManagerRequest_System_String_) or [ReadAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_ReadAsync_Syncfusion_Blazor_DataManagerRequest_System_String_) method of the [DataAdaptor](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html) abstract class. -To handle filtering operations, ensure that your API endpoint supports custom filtering criteria. Implement the filtering logic on the server-side using the [PerformFiltering](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html#Syncfusion_Blazor_DataOperations_PerformFiltering_System_Collections_IEnumerable_System_Collections_Generic_List_Syncfusion_Blazor_Data_WhereFilter__System_String_) method from the `DataOperations` class. This allows the custom data source to undergo filtering based on the criteria specified in the incoming **DataManagerRequest** object. +In the code example below, sorting a custom data source can be accomplished by employing the built-in [PerformSorting](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html#Syncfusion_Blazor_DataOperations_PerformSorting__1_System_Collections_Generic_IEnumerable___0__System_Collections_Generic_List_Syncfusion_Blazor_Data_Sort__) method of the [DataOperations](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html) class. Alternatively, you can implement your own method for sorting operation and bind the resulting data to the Blazor DataGrid. {% highlight razor %} - [HttpPost] - [Route("api/[controller]")] - public object Post([FromBody] DataManagerRequest DataManagerRequest) - { - IEnumerable DataSource = GetOrderData(); - if (DataManagerRequest.Where != null && DataManagerRequest.Where.Count > 0) - { - // Filtering - DataSource = DataOperations.PerformFiltering(DataSource, DataManagerRequest.Where, DataManagerRequest.Where[0].Operator); - } - int count = DataSource.Cast().Count(); - return new { result = DataSource, count = count }; - } +public class CustomAdaptor : DataAdaptor +{ + public OrderData OrderService = new OrderData(); + // Performs data read operation + public override async Task ReadAsync(DataManagerRequest DataManagerRequest, string key = null) + { + IEnumerable DataSource = await OrderService.GetOrdersAsync(); + if (DataManagerRequest.Sorted != null && DataManagerRequest.Sorted.Count > 0) + { + // Sorting + DataSource = DataOperations.PerformSorting(DataSource, DataManagerRequest.Sorted); + } + int count = DataSource.Cast().Count(); + return DataManagerRequest.RequiresCounts ? new DataResult() { Result = DataSource, Count = count } : (object)DataSource; + } +} {% endhighlight %} -**Perform Paging:** +### Handling paging operation -To handle paging operations, ensure that your API endpoint supports custom paging criteria. Implement the paging logic on the server-side using the [PerformTake](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html#Syncfusion_Blazor_DataOperations_PerformTake_System_Collections_IEnumerable_System_Int32_) and [PerformSkip](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html#Syncfusion_Blazor_DataOperations_PerformSkip__1_System_Collections_Generic_IEnumerable___0__System_Int32_) method from the `DataOperations` class. This allows the custom data source to undergo paging based on the criteria specified in the incoming **DataManagerRequest** object. +When employing the `CustomAdaptor`, handling paging operation involves overriding the [Read](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_Read_Syncfusion_Blazor_DataManagerRequest_System_String_) or [ReadAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_ReadAsync_Syncfusion_Blazor_DataManagerRequest_System_String_) method of the [DataAdaptor](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html) abstract class. + +In the code example below, paging a custom data source can be achieved by utilizing the built-in [PerformTake](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html#Syncfusion_Blazor_DataOperations_PerformTake_System_Collections_IEnumerable_System_Int32_) and [PerformSkip](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html#Syncfusion_Blazor_DataOperations_PerformSkip__1_System_Collections_Generic_IEnumerable___0__System_Int32_) method of the [DataOperations](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html) class. Alternatively, you can use your own method for paging operation and bind the resulting data to the Blazor DataGrid. {% highlight razor %} - [HttpPost] - [Route("api/[controller]")] - public object Post([FromBody] DataManagerRequest DataManagerRequest) - { - IEnumerable DataSource = GetOrderData(); - int count = DataSource.Cast().Count(); - - if (DataManagerRequest.Skip != 0) - { - // Paging - DataSource = DataOperations.PerformSkip(DataSource, DataManagerRequest.Skip); - } - if (DataManagerRequest.Take != 0) - { - DataSource = DataOperations.PerformTake(DataSource, DataManagerRequest.Take); - } - return new { result = DataSource, count = count }; - } +public class CustomAdaptor : DataAdaptor +{ + public OrderData OrderService = new OrderData(); + // Performs data read operation + public override async Task ReadAsync(DataManagerRequest DataManagerRequest, string key = null) + { + IEnumerable DataSource = await OrderService.GetOrdersAsync(); + int count = DataSource.Cast().Count(); + if (DataManagerRequest.Skip != 0) + { + // Paging + DataSource = DataOperations.PerformSkip(DataSource, DataManagerRequest.Skip); + } + if (DataManagerRequest.Take != 0) + { + // Taking + DataSource = DataOperations.PerformTake(DataSource, DataManagerRequest.Take); + } + return DataManagerRequest.RequiresCounts ? new DataResult() { Result = DataSource, Count = count } : (object)DataSource; + } +} {% endhighlight %} -**Perform Grouping:** +### Handling grouping operation -To handle grouping operations, ensure that your API endpoint supports custom grouping criteria. Implement the grouping logic on the server-side using the `Group` method from the [DataUtil](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Data.DataUtil.html) class. This allows the custom data source to undergo grouping based on the criteria specified in the incoming **DataManagerRequest** object. +When employing `CustomAdaptor`, the grouping operation must be managed wihtin the [Read](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_Read_Syncfusion_Blazor_DataManagerRequest_System_String_) or [ReadAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_ReadAsync_Syncfusion_Blazor_DataManagerRequest_System_String_) method of the `CustomAdaptor`. + +The provided sample code illustrated how to implement the grouping operation within `CustomAdaptor`, {% highlight razor %} - [HttpPost] - [Route("api/[controller]")] - [HttpPost] - [Route("api/[controller]")] - public object Post([FromBody] DataManagerRequest DataManagerRequest) - { - IEnumerable DataSource = GetOrderData(); - int count = DataSource.Cast().Count(); - DataResult DataObject = new DataResult(); - if (DataManagerRequest.Group != null) - { - System.Collections.IEnumerable ResultData = DataSource.ToList(); - // Grouping - foreach (var group in DataManagerRequest.Group) - { - ResultData = DataUtil.Group(ResultData, group, DataManagerRequest.Aggregates, 0, DataManagerRequest.GroupByFormatter); - } - DataObject.Result = ResultData; - DataObject.Count = count; - return DataManagerRequest.RequiresCounts ? DataObject : (object)ResultData; - } - return new { result = DataSource, count = count }; - } +public class CustomAdaptor : DataAdaptor +{ + public OrderData OrderService = new OrderData(); + // Performs data read operation + public override async Task ReadAsync(DataManagerRequest DataManagerRequest, string key = null) + { + IEnumerable DataSource = await OrderService.GetOrdersAsync(); + int count = DataSource.Cast().Count(); + DataResult DataObject = new DataResult(); + if (DataManagerRequest.Group != null) + { + IEnumerable ResultData = DataSource.ToList(); + // Grouping + foreach (var group in DataManagerRequest.Group) + { + ResultData = DataUtil.Group(ResultData, group, DataManagerRequest.Aggregates, 0, DataManagerRequest.GroupByFormatter); + } + DataObject.Result = ResultData; + DataObject.Count = count; + return DataManagerRequest.RequiresCounts ? DataObject : (object)ResultData; + } + return DataManagerRequest.RequiresCounts ? new DataResult() { Result = DataSource, Count = count } : (object)DataSource; + } +} {% endhighlight %} -> For optimal performance, it is recommended to follow this sequence of operations(Search, Filter, Sort, Paging, Grouping) in the **ReadAsync** method +> For optimal performance, it is recommended to follow this sequence of operations(Searching, Filtering, Sorting, Paging, Grouping) in the `ReadAsync` method -### Handling CRUD operations +### Handling CRUD operations -To enable editing in this grid component, utilize the [GridEditSettings](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridEditSettings.html) component. The grid offers multiple editing modes including the [Inline/Normal](https://blazor.syncfusion.com/documentation/datagrid/in-line-editing), [Dialog](https://blazor.syncfusion.com/documentation/datagrid/dialog-editing), and [Batch](https://blazor.syncfusion.com/documentation/datagrid/batch-editing) editing. For more details, refer to the grid [editing](https://blazor.syncfusion.com/documentation/datagrid/editing) documentation. +To enable editing in the Blazor DataGrid component, utilize the [GridEditSettings](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridEditSettings.html) component. The Blazor DataGrid offers multiple edit modes including the Inline/Normal, Dialog and Batch editing. For more details, refer to the Blazor DataGrid [editing](https://blazor.syncfusion.com/documentation/datagrid/editing) documentation. -In this scenario, the inline edit mode and [Toolbar](https://blazor.syncfusion.com/documentation/datagrid/tool-bar) property are configured to display toolbar items for editing purposes. +In this scenario, the inline edit mode and [Toolbar](https://blazor.syncfusion.com/documentation/datagrid/tool-bar) property configured to display toolbar items for editing purpose. -{% tabs %} {% highlight razor %} - - - - - - - - - - + + {% endhighlight %} -{% endtabs %} -> * Normal editing is the default edit mode for the DataGrid component. To enable CRUD operations, ensure that the [IsPrimaryKey](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridColumn.html#Syncfusion_Blazor_Grids_GridColumn_IsPrimaryKey) property is set to **true** for a specific GridColumn, ensuring that its value is unique. -> * If database have AutoGenerated column, kinldy ensure to define [IsIdentity](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridColumn.html#Syncfusion_Blazor_Grids_GridColumn_IsIdentity) property of GridColumn to disable them while adding or editing operations. +> * Normal editing is the default edit mode for the Blazor DataGrid component. To enable CRUD operations, ensure that the [IsPrimaryKey](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridColumn.html#Syncfusion_Blazor_Grids_GridColumn_IsPrimaryKey) property is set to **true** for a specific `GridColumn`, ensuring that its value is unique. +> * If database has an Autogenerated column, ensure to define [IsIdentity](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridColumn.html#Syncfusion_Blazor_Grids_GridColumn_IsIdentity) property of `GridColumn` to disable them during adding or editing operations. + +The CRUD operations can be performed and customized on our own by overriding the following CRUD methods of the [DataAdaptor](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html) abstract class. + +* Insert/InsertAsync +* Remove/RemoveAsync +* Update/UpdateAsync +* BatchUpdate/BatchUpdateAsync + +Let’s see how to perform CRUD operation using SQL server data with Syncfusion Blazor DataGrid component. **Insert Operation:** -To insert a new row, simply click the **Add** toolbar button. The new records edit form will be dispalyed as shown below. Upon clicking the **Update** toolbar button, record will inserted into in the Orders table by calling the following **POST** method of the API. +To execute the insert operation, you will need to override the [Insert](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_Insert_Syncfusion_Blazor_DataManager_System_Object_System_String_) or [InsertAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_InsertAsync_Syncfusion_Blazor_DataManager_System_Object_System_String_) method of the `CustomAdaptor`. Then, integrate the following code snippet into the `CustomAdaptor` class. The below code snippet demonstrated how to handle the insertion of new records within the `InsertAsync` method of `CustomAdaptor` component. Modify the logic within this method according to the requirements of your application. {% tabs %} -{% highlight c# tabtitle="OrdersController.cs" %} - [HttpPost] - [Route("api/Grid/Insert")] - public void Insert([FromBody] CRUDModel Value) - { - string ConnectionString = @""; - string Query = $"Insert into Orders(CustomerID,Freight,ShipCity,EmployeeID) values('{Value.Value.CustomerID}','{Value.Value.Freight}','{Value.Value.ShipCity}','{Value.Value.EmployeeID}')"; - SqlConnection SqlConnection = new SqlConnection(ConnectionString); - SqlConnection.Open(); - SqlCommand SqlCommand = new SqlCommand(Query, SqlConnection); - SqlCommand.ExecuteNonQuery(); - SqlConnection.Close(); - } +{% highlight razor tabtitle="Index.razor"%} +// Perform Insert operation +public override async Task InsertAsync(DataManager DataManager, object Value, string Key) +{ + // Add your insert logic here + // This method will be invoked when inserting new records into the Blazor DataGrid. + await OrderService.AddOrderAsync(Value as Order); + return Value; +} +{% endhighlight %} +{% highlight razor tabtitle="Orderdata.cs"%} +public async Task AddOrderAsync(Order Value) +{ + string ConnectionString = $""; + string Query = $"Insert into Orders(CustomerID, Freight, ShipCity, EmployeeID) values('{Value.CustomerID}', '{Value.Freight}', '{Value.ShipCity}', '{Value.EmployeeID}')"; + SqlConnection Connection = new SqlConnection(ConnectionString); + Connection.Open(); + SqlCommand Command = new SqlCommand(Query, Connection); + Command.ExecuteNonQuery(); + Connection.Close(); +} {% endhighlight %} {% endtabs %} **Update Operation:** -To edit a row, first select desrired row and click the **Edit** toolbar button. The edit form will be displayed as shown below. proceed to modify the CustomerName column as needed. Clicking the **Update** toolbar button will update the edit record in the Orders table by involing the following **Post** method of the API. +To execute the update operation, override the [Update](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_Update_Syncfusion_Blazor_DataManager_System_Object_System_String_System_String_) or [UpdateAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_UpdateAsync_Syncfusion_Blazor_DataManager_System_Object_System_String_System_String_) method of the `CustomAdaptor`. Then, integrate the following code snippet into the `CustomAdaptor` class. The below code snippet demonstrated how to handle the updating of existing records within the `UpdateAsync` method of the `CustomAdaptor` component. Modify the logic within this method according to the requirements of your application. {% tabs %} -{% highlight c# tabtitle="OrdersController.cs" %} -[HttpPost] -[Route("api/Grid/Update")] -public void Update([FromBody] CRUDModel Value) +{% highlight razor tabtitle="Index.razor"%} +// Perform Update operation +public override async Task UpdateAsync(DataManager DataManager, object Value, string keyField, string key) { - string ConnectionString = @""; - string Query = $"Update Orders set CustomerID='{Value.Value.CustomerID}', Freight='{Value.Value.Freight}',EmployeeID='{Value.Value.EmployeeID}',ShipCity='{Value.Value.ShipCity}' where OrderID='{Value.Value.OrderID}'"; - SqlConnection SqlConnection = new SqlConnection(ConnectionString); - SqlConnection.Open(); - SqlCommand SqlCommand = new SqlCommand(Query, SqlConnection); - SqlCommand.ExecuteNonQuery(); - SqlConnection.Close(); + // Add your update logic here + // This method will be invoked when updating existing records in the Blazor DataGrid. + await OrderService.UpdateOrderAsync(Value as Order); + return Value; +} +{% endhighlight %} +{% highlight razor tabtitle="Orderdata.cs"%} + public async Task UpdateOrderAsync(Order Value) +{ + string ConnectionString = $""; + SqlConnection Connection = new SqlConnection(ConnectionString); + Connection.Open(); + SqlCommand Command = new SqlCommand(Query, Connection); + Command.ExecuteNonQuery(); + Connection.Close(); } {% endhighlight %} {% endtabs %} **Delete Operation:** -To delete a row, simply select the desrired row and click the **Delete** toolbar button. This action will trigger a **DELETE** request to the API, containing the primary key value of the selected record. As a result corresponding record will be removed from the Orders table. +To Perform the delete operation, you need to override the [Remove](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_Remove_Syncfusion_Blazor_DataManager_System_Object_System_String_System_String_) or [RemoveAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_RemoveAsync_Syncfusion_Blazor_DataManager_System_Object_System_String_System_String_) method of the `CustomAdaptor`. Below is the code snippet that you can add to `CustomAdaptor` class. The below code snippet demonstrated how to handle the deletion of existing records within the `RemoveAsync` method of `CustomAdaptor` component. Modify the logic within this method according to the requirements of your application. {% tabs %} -{% highlight c# tabtitle="OrdersController.cs" %} - [HttpPost] - [Route("api/Grid/Delete")] - public void Delete([FromBody] CRUDModel Value) +{% highlight razor tabtitle="Index.razor"%} +// Perform Delete operation +public override async Task RemoveAsync(DataManager DataManager, object Value, string keyField, string key) +{ + // Add your delete logic here + // This method will be invoked when deleting existing records from the Blazor DataGrid. + await OrderService.RemoveOrderAsync(Value as int?); + return Value; +} +{% endhighlight %} +{% highlight razor tabtitle="Orderdata.cs"%} + public async Task RemoveOrderAsync(int? Key) { - string ConnectionString = @""; - string Query = $"Delete from Orders where OrderID={Value.Key}"; - SqlConnection SqlConnection = new SqlConnection(ConnectionString); - SqlConnection.Open(); - SqlCommand SqlCommand = new SqlCommand(Query, SqlConnection); - SqlCommand.ExecuteNonQuery(); - SqlConnection.Close(); - } + string ConnectionString = $""; + string Query = $"Delete from Orders where OrderID={Key}"; + SqlConnection Connection = new SqlConnection(ConnectionString); + Connection.Open(); + SqlCommand Command = new SqlCommand(Query, Connection); + Command.ExecuteNonQuery(); + Connection.Close(); + } {% endhighlight %} {% endtabs %} **Batch Operation** -To perform Batch Operations, define the Edit Mode as `Batch` and specify the [BatchUrl](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataManager.html#Syncfusion_Blazor_DataManager_BatchUrl) property in the SfDataManager. Use the "Add" toolbar button to insert new rows in batch mode. To edit a cell, double-click the desired cell and update the value as required. To delete a record, simply select the record and press the "Delete" toolbar button. Now, all CRUD operations will be executed in batch mode. Clicking the "Update" toolbar button will update the newly added, edited records, or deleted records from the Orders table using a single API **POST** request. +To perform the batch operation, override the [BatchUpdate](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_BatchUpdate_Syncfusion_Blazor_DataManager_System_Object_System_Object_System_Object_System_String_System_String_System_Nullable_System_Int32__) or [BatchUpdateAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_BatchUpdateAsync_Syncfusion_Blazor_DataManager_System_Object_System_Object_System_Object_System_String_System_String_System_Nullable_System_Int32__) method of the `CustomAdaptor` and add the following code in the `CustomAdaptor`. The below code snippet demonstrated how to handle the batch update request within the `BatchUpdateAsync` method of `CustomAdaptor` component. Modify the logic within this method according to the requirements of your application. {% highlight razor %} - // Performs BatchUpdate operation -[HttpPost] -[Route("api/Grid/Batch")] -public void Batch([FromBody] CRUDModel Value) +// Perform BatchUpdate operation +public override async Task BatchUpdateAsync(DataManager DataManager, object Changed, object Added, object Deleted, string KeyField, string Key, int? dropIndex) { - if (Value.Changed != null) + if (Changed != null) { - foreach (var record in (IEnumerable)Value.Changed) + foreach (var record in (IEnumerable)Changed) { - //update in your database + await OrderService.UpdateOrderAsync(record as Order); } - } - if (Value.Added != null) + if (Added != null) { - foreach (var record in (IEnumerable)Value.Added) + foreach (var record in (IEnumerable)Added) { - //Insert in your database + await OrderService.AddOrderAsync(record as Order); } - } - if (Value.Deleted != null) + if (Deleted != null) { - foreach (var record in (IEnumerable)Value.Deleted) + foreach (var record in (IEnumerable)Deleted) { - //remove the records from your database + await OrderService.RemoveOrderAsync((record as Order).OrderID); } } + return Key; } {% endhighlight %} -> Find the sample from this [Github location](https://github.com/SyncfusionExamples/blazor-grid-mssql-connectivity-using-api-service). +> You can find the sample in this [GitHub location](https://github.com/SyncfusionExamples/blazor-grid-mssql-connectivity-using-custom-adaptor). + diff --git a/blazor/datagrid/images/Ms-Sql-data.png b/blazor/datagrid/images/Ms-Sql-data.png index 7cd02224df5c8b7e658e56f94189320ba2df3991..e7cdc38b5ded3dba666303726b38be8cd927d36e 100644 GIT binary patch literal 94493 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 RVUZixmnuL@u}a<=`Y+(zgzf+U literal 61766 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

MA;XOnSnF<7YlIcn(B!zX`>>O}PNI!!8TsUyq|7 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 ^7-^(g()*af|<%( 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 MMO(Q>(IVvk0G`P(y#N3J diff --git a/blazor/datagrid/images/blazor-Grid-Ms-SQL-databinding.png b/blazor/datagrid/images/blazor-Grid-Ms-SQL-databinding.png index 1bfda01810db5d27197fcbffdcbc63c131cb30cf..0bcee6a3d793a1c7391e12a6b217ff4f2c2b944d 100644 GIT binary patch literal 53367 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 Z7Wqofg8pOK*7-$0SJHY`{`-r!{{!|}H2eSn literal 52488 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 T&UWQgKltbX`1_hHaKhaK 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 From 651bc41d6d304f3ffbe2699c4c6ab7912d8440e0 Mon Sep 17 00:00:00 2001 From: MaithiliyK Date: Wed, 28 Feb 2024 23:01:41 +0530 Subject: [PATCH 2/6] Update microsoft-sql-server.md --- .../microsoft-sql-server.md | 34 +++++++++---------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/blazor/datagrid/connecting-to-database/microsoft-sql-server.md b/blazor/datagrid/connecting-to-database/microsoft-sql-server.md index 58e4e90320..1abff37b36 100644 --- a/blazor/datagrid/connecting-to-database/microsoft-sql-server.md +++ b/blazor/datagrid/connecting-to-database/microsoft-sql-server.md @@ -1,7 +1,7 @@ --- layout: post -title: Microsoft SQL Data Binding in Blazor DataGrid Component | Syncfusion -description: Learn about consuming data from SQL Server using Microsoft SQL Client, binding it to Syncfusion Component, and performing CRUD operations +title: Microsoft SQL Server Data Binding in Blazor DataGrid Component | Syncfusion +description: Learn about consuming data from Microsoft SQL Server using Microsoft SQL Client, binding it to Syncfusion Blazor DataGrid component, and performing CRUD operations platform: Blazor control: DataGrid documentation: ug @@ -11,7 +11,7 @@ documentation: ug This section describes how to connect and retrieve data from a Microsoft SQL Server database using [System.Data.SqlClient](https://www.nuget.org/packages/System.Data.SqlClient/4.8.6?_src=template) and bind it to the Blazor DataGrid component. -Microsoft SQL Server database can be bound to the Blazor DataGrid in different ways (i.e.) [DataSource](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.SfGrid-1.html#Syncfusion_Blazor_Grids_SfGrid_1_DataSource) property, [CustomAdaptor](https://blazor.syncfusion.com/documentation/datagrid/custom-binding) and Remote data binding using various adaptors (Web API, OData, ODataV4, Url). In this documentation, two approaches will be examined to connect a Microsoft SQL Server database to a Blazor DataGrid component. Both the approaches have capability to handle data and CRUD operations with built-in methods as well as can be customized as per your own. +Microsoft SQL Server database can be bound to the Blazor DataGrid in different ways (i.e.) using [DataSource](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.SfGrid-1.html#Syncfusion_Blazor_Grids_SfGrid_1_DataSource) property, [CustomAdaptor](https://blazor.syncfusion.com/documentation/datagrid/custom-binding) feature and Remote data binding using various adaptors (Web API, OData, ODataV4, Url, GraphQL). In this documentation, two approaches will be examined to connect a Microsoft SQL Server database to a Blazor DataGrid component. Both the approaches have capability to handle data and CRUD operations with built-in methods as well as can be customized as per your own. * **Using UrlAdaptor** @@ -27,7 +27,7 @@ The [CustomAdaptor](https://blazor.syncfusion.com/documentation/datagrid/custom- **1.** Open Visual Studio and create an ASP.NET Core Web App project type, naming it **MyWebService**. To create an ASP.NET Core Web application, follow the documentation [link](https://learn.microsoft.com/en-us/visualstudio/get-started/csharp/tutorial-aspnet-core?view=vs-2022). -**2.** To connect a Microsoft SQL Server using the Microsoft SQL driver in your application, you need to install the [System.Data.SqlClient](https://www.nuget.org/packages/System.Data.SqlClient/4.8.6?_src=template) NuGet package. To add **System.Data.SqlClient** in the app, open the NuGet package manager in Visual Studio (Tools → NuGet Package Manager → Manage NuGet Packages for Solution), search and install it. +**2.** To connect a Microsoft SQL Server database using the Microsoft SQL driver in your application, you need to install the [System.Data.SqlClient](https://www.nuget.org/packages/System.Data.SqlClient/4.8.6?_src=template) NuGet package. To add **System.Data.SqlClient** in the app, open the NuGet package manager in Visual Studio (Tools → NuGet Package Manager → Manage NuGet Packages for Solution), search and install it. **3.** Create an API controller (aka, GridController.cs) file under **Controllers** folder that helps to establish data communication with the Blazor DataGrid. @@ -144,8 +144,8 @@ When you run the application, the resultant Blazor DataGrid will look like this ![Blazor DataGrid bound with Microsoft SQL Server data](../images/blazor-Grid-Ms-SQL-databinding.png) -> * The Syncfusion Blazor DataGrid component provides built-in support for handling various data operations, including **searching**, **sorting**, **filtering**, **paging**, and **grouping** on the server-side. These operations can be managed using methods such as `PerformSearching`, `PerformSorting`, `PerformFiltering`, `PerformTake`, and `PerformSkip` available in the **Syncfusion.Blazor.Data** package. Below, let's explore how to manage these data operations using the `UrlAdaptor`. -> * In an API service project, add **Syncfusion.Blazor.Data** in the app by opening the NuGet package manager in Visual Studio (Tools → NuGet Package Manager → Manage NuGet Packages for Solution), search and install it. +> * The Syncfusion Blazor DataGrid component provides built-in support for handling various data operations such as **searching**, **sorting**, **filtering**, **paging**, and **grouping** on the server-side. These operations can be handled using methods such as PerformSearching, PerformSorting, PerformFiltering, PerformTake, and PerformSkip, available in the **Syncfusion.Blazor.Data** package. Let's explore how to manage these data operations using the `UrlAdaptor`. +> * In an API service project, add **Syncfusion.Blazor.Data** by opening the NuGet package manager in Visual Studio (Tools → NuGet Package Manager → Manage NuGet Packages for Solution), search and install it. ### Handling searching operation @@ -311,7 +311,7 @@ public void Insert([FromBody] CRUDModel Value) **Update Operation:** -To edit a row, first select desired row and click the **Edit** toolbar button. The edit form will be displayed as shown below and proceed to modify the any column value as per your requirement. Clicking the **Update** toolbar button will update the edit record in the Orders table by involving the following **Post** method of an API. +To edit a row, first select desired row and click the **Edit** toolbar button. The edit form will be displayed and proceed to modify any column value as per your requirement. Clicking the **Update** toolbar button will update the edit record in the Orders table by involving the following **Post** method of an API. {% tabs %} {% highlight c# tabtitle="OrdersController.cs" %} @@ -351,9 +351,9 @@ To delete a row, simply select the desired row and click the **Delete** toolbar {% endhighlight %} {% endtabs %} -**Batch Operation** +**Batch Operation:** -To perform batch operations, define the edit [Mode](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridEditSettings.html#Syncfusion_Blazor_Grids_GridEditSettings_Mode) as `Batch` and specify the [BatchUrl](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataManager.html#Syncfusion_Blazor_DataManager_BatchUrl) property in the `SfDataManager`. Use the **Add** toolbar button to insert new row in batch editing mode. To edit a cell, double-click the desired cell and update the value as required. To delete a record, simply select the record and press the **Delete** toolbar button. Now, all CRUD operations will be executed in batch editing mode. Clicking the **Update** toolbar button will update the newly added, edited, or deleted records from the Orders table using a single API **POST** request. +To perform batch operation, define the edit [Mode](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridEditSettings.html#Syncfusion_Blazor_Grids_GridEditSettings_Mode) as `Batch` and specify the [BatchUrl](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataManager.html#Syncfusion_Blazor_DataManager_BatchUrl) property in the `SfDataManager`. Use the **Add** toolbar button to insert new row in batch editing mode. To edit a cell, double-click the desired cell and update the value as required. To delete a record, simply select the record and press the **Delete** toolbar button. Now, all CRUD operations will be executed in batch editing mode. Clicking the **Update** toolbar button will update the newly added, edited, or deleted records from the Orders table using a single API **POST** request. {% highlight razor %} // Performs BatchUpdate operation @@ -391,9 +391,9 @@ public void Batch([FromBody] CRUDModel Value) **1.** Create a simple Blazor DataGrid by following the [Getting Started](https://blazor.syncfusion.com/documentation/datagrid/getting-started-with-web-app) documentation link. In this Blazor web app, the `rendermode` is set as **InteractiveServer**. -**2.** To connect a Microsoft SQL Server using the Microsoft SQL driver in your application, you need to install the [System.Data.SqlClient](https://www.nuget.org/packages/System.Data.SqlClient/4.8.6?_src=template) NuGet package. To do this, open the NuGet package manager of the project solution, search for the package **System.Data.SqlClient**, and proceed with the installation. +**2.** To connect a Microsoft SQL Server database using the Microsoft SQL driver in your application, you need to install the [System.Data.SqlClient](https://www.nuget.org/packages/System.Data.SqlClient/4.8.6?_src=template) NuGet package. To add **System.Data.SqlClient** in the app, open the NuGet package manager in Visual Studio (Tools → NuGet Package Manager → Manage NuGet Packages for Solution), search and install it. -**3.** To inject your service into a `CustomAdaptor` and utilize it, you can meet your requirements using the following approach. +**3.** If you intend to inject your own service into the `CustomAdaptor` and utilize it, you can achieve this as follows. {% tabs %} {% highlight razor tabtitle="Index.razor" %} @@ -432,7 +432,6 @@ public void Batch([FromBody] CRUDModel Value) {% endhighlight %} {% endtabs %} - **4.** Within the CustomAdaptor’s [ReadAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_ReadAsync_Syncfusion_Blazor_DataManagerRequest_System_String_) method, fetch the data from the service by calling the `GetOrdersAsync` method. * In this `GetOrdersAsync` method, the Microsoft SQL Server database data is fetch by using the **SqlDataAdapter** class. @@ -543,7 +542,7 @@ public class CustomAdaptor : DataAdaptor When employing the `CustomAdaptor`, handling the filtering operation involves overriding the [Read](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_Read_Syncfusion_Blazor_DataManagerRequest_System_String_) or [ReadAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_ReadAsync_Syncfusion_Blazor_DataManagerRequest_System_String_) method of the [DataAdaptor](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html) abstract class. -In the code example below, filtering a custom data source can be achieved by utilizing the built-in [PerformFiltering](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html#Syncfusion_Blazor_DataOperations_PerformFiltering__1_System_Collections_Generic_IEnumerable___0__System_Collections_Generic_List_Syncfusion_Blazor_Data_WhereFilter__System_String_) method of the [DataOperations](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html) class. Alternatively, you can implement your own method for filtering operations and bind the resulting data to the Blazor DataGrid. +In the code example below, filtering a custom data source can be achieved by utilizing the built-in [PerformFiltering](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html#Syncfusion_Blazor_DataOperations_PerformFiltering__1_System_Collections_Generic_IEnumerable___0__System_Collections_Generic_List_Syncfusion_Blazor_Data_WhereFilter__System_String_) method of the [DataOperations](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataOperations.html) class. Alternatively, you can implement your own method for filtering operation and bind the resulting data to the Blazor DataGrid. {% highlight razor %} public class CustomAdaptor : DataAdaptor @@ -621,7 +620,7 @@ public class CustomAdaptor : DataAdaptor ### Handling grouping operation -When employing `CustomAdaptor`, the grouping operation must be managed wihtin the [Read](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_Read_Syncfusion_Blazor_DataManagerRequest_System_String_) or [ReadAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_ReadAsync_Syncfusion_Blazor_DataManagerRequest_System_String_) method of the `CustomAdaptor`. +When employing `CustomAdaptor`, the grouping operation must be managed within the [Read](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_Read_Syncfusion_Blazor_DataManagerRequest_System_String_) or [ReadAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_ReadAsync_Syncfusion_Blazor_DataManagerRequest_System_String_) method of the `CustomAdaptor`. The provided sample code illustrated how to implement the grouping operation within `CustomAdaptor`, @@ -678,7 +677,7 @@ The CRUD operations can be performed and customized on our own by overriding the * Update/UpdateAsync * BatchUpdate/BatchUpdateAsync -Let’s see how to perform CRUD operation using SQL server data with Syncfusion Blazor DataGrid component. +Let’s see how to perform CRUD operation using Microsoft SQL Server data with Syncfusion Blazor DataGrid component. **Insert Operation:** @@ -739,7 +738,7 @@ public override async Task UpdateAsync(DataManager DataManager, object V **Delete Operation:** -To Perform the delete operation, you need to override the [Remove](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_Remove_Syncfusion_Blazor_DataManager_System_Object_System_String_System_String_) or [RemoveAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_RemoveAsync_Syncfusion_Blazor_DataManager_System_Object_System_String_System_String_) method of the `CustomAdaptor`. Below is the code snippet that you can add to `CustomAdaptor` class. The below code snippet demonstrated how to handle the deletion of existing records within the `RemoveAsync` method of `CustomAdaptor` component. Modify the logic within this method according to the requirements of your application. +To perform the delete operation, you need to override the [Remove](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_Remove_Syncfusion_Blazor_DataManager_System_Object_System_String_System_String_) or [RemoveAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_RemoveAsync_Syncfusion_Blazor_DataManager_System_Object_System_String_System_String_) method of the `CustomAdaptor`. Below is the code snippet that you can add to `CustomAdaptor` class. The below code snippet demonstrated how to handle the deletion of existing records within the `RemoveAsync` method of `CustomAdaptor` component. Modify the logic within this method according to the requirements of your application. {% tabs %} {% highlight razor tabtitle="Index.razor"%} @@ -766,7 +765,7 @@ public override async Task RemoveAsync(DataManager DataManager, object V {% endhighlight %} {% endtabs %} -**Batch Operation** +**Batch Operation:** To perform the batch operation, override the [BatchUpdate](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_BatchUpdate_Syncfusion_Blazor_DataManager_System_Object_System_Object_System_Object_System_String_System_String_System_Nullable_System_Int32__) or [BatchUpdateAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.DataAdaptor.html#Syncfusion_Blazor_DataAdaptor_BatchUpdateAsync_Syncfusion_Blazor_DataManager_System_Object_System_Object_System_Object_System_String_System_String_System_Nullable_System_Int32__) method of the `CustomAdaptor` and add the following code in the `CustomAdaptor`. The below code snippet demonstrated how to handle the batch update request within the `BatchUpdateAsync` method of `CustomAdaptor` component. Modify the logic within this method according to the requirements of your application. @@ -800,4 +799,3 @@ public override async Task BatchUpdateAsync(DataManager DataManager, obj {% endhighlight %} > You can find the sample in this [GitHub location](https://github.com/SyncfusionExamples/blazor-grid-mssql-connectivity-using-custom-adaptor). - From 2f5aa260325fd63af64493255cf652d27f67afaf Mon Sep 17 00:00:00 2001 From: MaithiliyK Date: Wed, 28 Feb 2024 23:10:43 +0530 Subject: [PATCH 3/6] Update microsoft-sql-server.md --- blazor/datagrid/connecting-to-database/microsoft-sql-server.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blazor/datagrid/connecting-to-database/microsoft-sql-server.md b/blazor/datagrid/connecting-to-database/microsoft-sql-server.md index 1abff37b36..5cdb301304 100644 --- a/blazor/datagrid/connecting-to-database/microsoft-sql-server.md +++ b/blazor/datagrid/connecting-to-database/microsoft-sql-server.md @@ -1,7 +1,7 @@ --- layout: post title: Microsoft SQL Server Data Binding in Blazor DataGrid Component | Syncfusion -description: Learn about consuming data from Microsoft SQL Server using Microsoft SQL Client, binding it to Syncfusion Blazor DataGrid component, and performing CRUD operations +description: Learn about consuming data from Microsoft SQL Server using Microsoft SQL Client, binding it to Syncfusion Blazor DataGrid component, and performing CRUD operations. platform: Blazor control: DataGrid documentation: ug From c5d011825487e2ad877898bc0a90c4a0d04b7abd Mon Sep 17 00:00:00 2001 From: MaithiliyK Date: Wed, 28 Feb 2024 23:13:12 +0530 Subject: [PATCH 4/6] Update microsoft-sql-server.md --- blazor/datagrid/connecting-to-database/microsoft-sql-server.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blazor/datagrid/connecting-to-database/microsoft-sql-server.md b/blazor/datagrid/connecting-to-database/microsoft-sql-server.md index 5cdb301304..ae19267701 100644 --- a/blazor/datagrid/connecting-to-database/microsoft-sql-server.md +++ b/blazor/datagrid/connecting-to-database/microsoft-sql-server.md @@ -144,7 +144,7 @@ When you run the application, the resultant Blazor DataGrid will look like this ![Blazor DataGrid bound with Microsoft SQL Server data](../images/blazor-Grid-Ms-SQL-databinding.png) -> * The Syncfusion Blazor DataGrid component provides built-in support for handling various data operations such as **searching**, **sorting**, **filtering**, **paging**, and **grouping** on the server-side. These operations can be handled using methods such as PerformSearching, PerformSorting, PerformFiltering, PerformTake, and PerformSkip, available in the **Syncfusion.Blazor.Data** package. Let's explore how to manage these data operations using the `UrlAdaptor`. +> * The Syncfusion Blazor DataGrid component provides built-in support for handling various data operations such as **searching**, **sorting**, **filtering**, **paging**, and **grouping** on the server-side. These operations can be handled using methods such as `PerformSearching`, `PerformSorting`, `PerformFiltering`, `PerformTake`, and `PerformSkip`, available in the **Syncfusion.Blazor.Data** package. Let's explore how to manage these data operations using the `UrlAdaptor`. > * In an API service project, add **Syncfusion.Blazor.Data** by opening the NuGet package manager in Visual Studio (Tools → NuGet Package Manager → Manage NuGet Packages for Solution), search and install it. ### Handling searching operation From 1f6908ad75e20e9291fc964875466dbb86ca4ce9 Mon Sep 17 00:00:00 2001 From: MaithiliyK Date: Wed, 28 Feb 2024 23:18:52 +0530 Subject: [PATCH 5/6] Update microsoft-sql-server.md --- blazor/datagrid/connecting-to-database/microsoft-sql-server.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blazor/datagrid/connecting-to-database/microsoft-sql-server.md b/blazor/datagrid/connecting-to-database/microsoft-sql-server.md index ae19267701..fa1b38811c 100644 --- a/blazor/datagrid/connecting-to-database/microsoft-sql-server.md +++ b/blazor/datagrid/connecting-to-database/microsoft-sql-server.md @@ -1,7 +1,7 @@ --- layout: post title: Microsoft SQL Server Data Binding in Blazor DataGrid Component | Syncfusion -description: Learn about consuming data from Microsoft SQL Server using Microsoft SQL Client, binding it to Syncfusion Blazor DataGrid component, and performing CRUD operations. +description: Learn about consuming data from SQL Server using Microsoft SQL Client, binding it to Syncfusion Component, and performing CRUD operations. platform: Blazor control: DataGrid documentation: ug From 54e1da0562be6efdddfa64fb17844514f3f931d0 Mon Sep 17 00:00:00 2001 From: MaithiliyK Date: Wed, 28 Feb 2024 23:30:22 +0530 Subject: [PATCH 6/6] Update microsoft-sql-server.md --- blazor/datagrid/connecting-to-database/microsoft-sql-server.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blazor/datagrid/connecting-to-database/microsoft-sql-server.md b/blazor/datagrid/connecting-to-database/microsoft-sql-server.md index fa1b38811c..81f079ea93 100644 --- a/blazor/datagrid/connecting-to-database/microsoft-sql-server.md +++ b/blazor/datagrid/connecting-to-database/microsoft-sql-server.md @@ -1,6 +1,6 @@ --- layout: post -title: Microsoft SQL Server Data Binding in Blazor DataGrid Component | Syncfusion +title: Microsoft SQL Data Binding in Blazor DataGrid Component | Syncfusion description: Learn about consuming data from SQL Server using Microsoft SQL Client, binding it to Syncfusion Component, and performing CRUD operations. platform: Blazor control: DataGrid