From 2e75ec5710b1aa6188f3164524413bd5629bc9ac Mon Sep 17 00:00:00 2001 From: vikramsundarajan <129823420+vikramsundarajan@users.noreply.github.com> Date: Tue, 15 Apr 2025 14:26:49 +0530 Subject: [PATCH 1/5] 952529: Added the missing topics in Sort, row template and grouping --- blazor/datagrid/grouping.md | 12 ++++ blazor/datagrid/row-template.md | 118 ++++++++++++++++++++++++++++++++ blazor/datagrid/sorting.md | 99 +++++++++++++++++++++++++++ 3 files changed, 229 insertions(+) diff --git a/blazor/datagrid/grouping.md b/blazor/datagrid/grouping.md index 8e22c80836..6fa63a88f9 100644 --- a/blazor/datagrid/grouping.md +++ b/blazor/datagrid/grouping.md @@ -542,6 +542,14 @@ The following example demonstrates how to sort the **CustomerID** column by sett {% previewsample "https://blazorplayground.syncfusion.com/embed/hjhUCMZGLoABNhxp?appbar=false&editor=false&result=true&errorlist=false&theme=bootstrap5" %} +## Group with paging + +The Sycnfusion Blazor DataGrid supports grouping columns along with paging. When grouping is applied, the grid displays aggregate values and group counts based on the current page by default. This means the group caption and group summary/footer will only reflect data from the current page. + +To calculate aggregates and total item counts across all pages, set the [DisablePageWiseAggregates](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridGroupSettings.html#Syncfusion_Blazor_Grids_GridGroupSettings_DisablePageWiseAggregates) property to **false** in the `GridGroupSettings`. This allows the grid to display complete aggregate information for each group, regardless of paging. + +> If remote data is bound to grid dataSource, two requests will be sent when performing grouping action one for getting the grouped data and another for getting aggregate details and total items count. + ## Group by format By default, columns are grouped by the data or value present for the particular row. However, you can also group numeric or datetime columns based on the specified format. To enable this feature, you need to set the [EnableGroupByFormat](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridColumn.html#Syncfusion_Blazor_Grids_GridColumn_EnableGroupByFormat) @@ -1150,7 +1158,11 @@ The following example demonstrates how the `Grouping` and `Grouped` events work {% previewsample "https://blazorplayground.syncfusion.com/embed/VDLpNCtffrjjtSYQ?appbar=false&editor=false&result=true&errorlist=false&theme=bootstrap5" %} +## Limitations +* Grouping is not compatible with the following features: + 1. Autofill + ## See Also * [Exporting grouped records](https://blazor.syncfusion.com/documentation/datagrid/excel-exporting#exporting-grouped-records) diff --git a/blazor/datagrid/row-template.md b/blazor/datagrid/row-template.md index e5370579b8..f714ee1a04 100644 --- a/blazor/datagrid/row-template.md +++ b/blazor/datagrid/row-template.md @@ -523,6 +523,124 @@ public static List Orders = new List(); {% previewsample "https://blazorplayground.syncfusion.com/embed/rjhTMsZwzXeNByOG?appbar=false&editor=false&result=true&errorlist=false&theme=bootstrap5" %} +## Render Syncfusion Chart in row template + +The Syncfusion Blazor DataGrid provides the flexibility to include custom controls, such as a Chart, within the rows of the Grid. This feature enhances Grid interactivity by allowing graphical representations of data instead of plain text. + +To render a Syncfusion Blazor Chart within a row template of the DataGrid, use the [RowTemplate](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridTemplates.html#Syncfusion_Blazor_Grids_GridTemplates_RowTemplate) property. This property accepts a Razor template that defines the layout for each row, enabling rich data visualization directly inside the Grid. + +Here is an example that demonstrates rendering Syncfusion Chart within a row template: + +{% tabs %} +{% highlight razor tabtitle="Index.razor" %} +@page "/" +@using Syncfusion.Blazor.Grids +@using Syncfusion.Blazor.Charts + + + + @{ + var order = emp as Order; + } + + + + + + + + + + + + + + + + +
Customer ID@order.CustomerID
Freight@order.Freight
Order Date@order.OrderDate?.ToShortDateString()
+ + + + + + + + + + +
+
+ + + + +
+ + +@code { + public List Orders { get; set; } + SfGrid Grid; + + protected override void OnInitialized() + { + Orders = Enumerable.Range(1, 5).Select(x => new Order() + { + OrderID = 1000 + x, + CustomerID = (new string[] { "ALFKI", "ANANTR", "ANTON", "BLONP", "BOLID" })[new Random().Next(5)], + Freight = 2.1 * x, + OrderDate = DateTime.Now.AddDays(-x), + }).ToList(); + } + public class Order + { + public int OrderID { get; set; } + public string CustomerID { get; set; } + public DateTime? OrderDate { get; set; } + public double? Freight { get; set; } + } + public class ChartData + { + public string Category { get; set; } + public double Value { get; set; } + } + + private List GetChartData(int orderId) + { + // Simulated data per row (can vary by orderId if needed). + return new List + { + new ChartData { Category = "Q1", Value = orderId % 10 + 10 }, + new ChartData { Category = "Q2", Value = orderId % 5 + 15 }, + new ChartData { Category = "Q3", Value = orderId % 7 + 5 }, + new ChartData { Category = "Q4", Value = orderId % 9 + 20 }, + }; + } +} + +{% endhighlight %} +{% endtabs %} + +{% previewsample "https://blazorplayground.syncfusion.com/embed/rtVINfWegMFKNCdv?appbar=false&editor=false&result=true&errorlist=false&theme=bootstrap5" %} + ## Limitations Row template feature is not compatible with all the features which are available in the grid, and it has limited features support. The features that are incompatible with the row template feature are listed below. diff --git a/blazor/datagrid/sorting.md b/blazor/datagrid/sorting.md index 9bf675ef36..11811fba0a 100644 --- a/blazor/datagrid/sorting.md +++ b/blazor/datagrid/sorting.md @@ -533,6 +533,105 @@ The following example demonstrates how to define custom sort comparer function f > * The SortComparer property will work only for local data. > * When using the column template to display data in a column, you will need to use the [Field](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridColumn.html#Syncfusion_Blazor_Grids_GridColumn_Field) property of [GridColumn](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridColumn.html) to work with the [SortComparer](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridColumn.html#Syncfusion_Blazor_Grids_GridColumn_SortComparer) property. +### Display null values always at bottom + +By default, null values in the Syncfusion Blazor DataGrid are displayed at the top when sorting in descending order and at the bottom when sorting in ascending order. However, there may be scenarios where null values need to be consistently shown at the bottom of the grid, regardless of the sort direction. This can be achieved by using the [SortComparer](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridColumn.html#Syncfusion_Blazor_Grids_GridColumn_SortComparer) property of the column. + +The `SortComparer` allows custom comparison logic for sorting. By implementing a custom comparer, null values can be handled separately and positioned at the end of the sorted list in both ascending and descending orders. + +The following example demonstrates how to configure the `SortComparer` for the **CustomrID** column to always place null values at the bottom: + +{% tabs %} +{% highlight razor tabtitle="Index.razor" %} +@using Syncfusion.Blazor.Grids + + + + + + + + + + + +@code { + public List Orders { get; set; } + protected override void OnInitialized() + { + Orders = Enumerable.Range(1, 12).Select(x => new Order() + { + OrderID = 1000 + x, + CustomerID = (new string[] { "ALFKI", "ANANTR", "ANTON", "BLONP", "BOLID", "", "CHARLIE", "DELTA", "ECHO", "FOXTROT", "GOLF", "HOTEL", "INDIA", "JULIET" })[new Random().Next(14)], + Freight = 2.1 * x, + OrderDate = DateTime.Now.AddDays(-x), + }).ToList(); + } + public class Order + { + public int? OrderID { get; set; } + public string CustomerID { get; set; } + public DateTime? OrderDate { get; set; } + public double? Freight { get; set; } + } + static bool flag = true; + public void SortingHandler(SortingEventArgs args) + { + if (args.Direction == Syncfusion.Blazor.Grids.SortDirection.Ascending) + { + flag = true; + + } + else if (args.Direction == Syncfusion.Blazor.Grids.SortDirection.Descending) + { + flag = false; + } + } + public class CustomComparer : IComparer + { + public int Compare(object XRowDataToCompare, object YRowDataToCompare) + { + Order XRowData = XRowDataToCompare as Order; + Order YRowData = YRowDataToCompare as Order; + string value1 = XRowData.CustomerID; + string value2 = YRowData.CustomerID; + if (flag == true){ + if (string.IsNullOrEmpty(value1) && string.IsNullOrEmpty(value2)) + { + return 0; + } + else if (string.IsNullOrEmpty(value1)) + { + return 1; // Place value1 after value2 (empty string goes to the bottom) + } + else if (string.IsNullOrEmpty(value2)) + { + return -1; // Place value2 after value1 (empty string goes to the bottom) + } + } + else if(flag == false){ + if (string.IsNullOrEmpty(value1) && string.IsNullOrEmpty(value2)) + { + return 0; + } + else if (string.IsNullOrEmpty(value1)) + { + return -1; + } + else if (string.IsNullOrEmpty(value2)) + { + return 1; + } + } + return string.Compare(value1, value2, StringComparison.OrdinalIgnoreCase); + } + } +} +{% endhighlight %} +{% endtabs %} + +{% previewsample "https://blazorplayground.syncfusion.com/embed/VZBIZTMpUEvLsNyW?appbar=false&editor=false&result=true&errorlist=false&theme=bootstrap5" %} + ## Touch interaction When you tap the datagrid header on touchscreen devices, the selected column header is sorted. A popup ![Sorting in Blazor DataGrid.](./images/blazor-datagrid-sorting.jpg) is displayed for multi-column sorting. To sort multiple columns, tap the popup![Multiple sorting in Blazor DataGrid.](./images/blazor-datagrid-multiple-sorting.jpg), and then tap the desired datagrid headers. From 1d405c5ee721be4f12dc93c75debdab82a44a605 Mon Sep 17 00:00:00 2001 From: vikramsundarajan <129823420+vikramsundarajan@users.noreply.github.com> Date: Tue, 22 Apr 2025 16:52:01 +0530 Subject: [PATCH 2/5] 952529: Added the topic of Customize group caption text using locale --- blazor/datagrid/caption-template.md | 171 ++++++++++++++++++ ...id-customize-group-caption-text-locale.PNG | Bin 0 -> 86024 bytes 2 files changed, 171 insertions(+) create mode 100644 blazor/datagrid/images/blazor-datagrid-customize-group-caption-text-locale.PNG diff --git a/blazor/datagrid/caption-template.md b/blazor/datagrid/caption-template.md index 3eace8c5cd..97ab3e2924 100644 --- a/blazor/datagrid/caption-template.md +++ b/blazor/datagrid/caption-template.md @@ -180,6 +180,177 @@ The following example demonstrates how to add a custom text to the group caption {% previewsample "https://blazorplayground.syncfusion.com/embed/hXVzjiXvgoxRzKIb?appbar=false&editor=false&result=true&errorlist=false&theme=bootstrap5" %} +## Customize group caption text using locale + +The Syncfusion Blazor DataGrid allows you to customize the group caption text based on the locale. This feature enables you to display localized text or translated content in the group captions according to different language or region settings. + +The following example demonstrates, how to customize group caption text based on **ar** locale. + +{% tabs %} +{% highlight razor tabtitle="Index.razor" %} +@using Syncfusion.Blazor.Grids + + + + + + + + + +@code { + public List Orders { get; set; } + protected override void OnInitialized() + { + var countries = new[] { "USA", "UK", "Germany", "Canada", "France" }; + var cities = new[] { "New York", "London", "Berlin", "Toronto", "Paris" }; + var random = new Random(); + Orders = Enumerable.Range(1, 75).Select(x => new Order() + { + OrderID = 1000 + x, + CustomerID = (new string[] { "ALFKI", "ANANTR", "ANTON", "BLONP", "BOLID" })[random.Next(5)], + Country = countries[random.Next(countries.Length)], + City = cities[random.Next(cities.Length)] + }).ToList(); + } + public class Order + { + public int? OrderID { get; set; } + public string CustomerID { get; set; } + public string Country { get; set; } + public string City { get; set; } + } +} +{% endhighlight %} +{% highlight c# tabtitle="SyncfusionLocalizer.cs" %} + +using Syncfusion.Blazor; +namespace LocalizationSample.Client +{ + public class SyncfusionLocalizer : ISyncfusionStringLocalizer + { + public string GetText ( string key ) + { + return this.ResourceManager.GetString(key); + } + public System.Resources.ResourceManager ResourceManager + { + get + { + // Replace the ApplicationNamespace with your application name. + return LocalizationSample.Client.Resources.SfResources.ResourceManager; + } + } + } +} + +{% endhighlight %} +{% highlight c# tabtitle="SfResources.ar.resx" %} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + اسحب رأس العمود هنا لتجميع العمود + + + انقر هنا لإلغاء التجميع + + + تم تعطيل التجميع لهذا العمود + + + بند + + + العناصر + + + تجميع حسب هذا العمود + + + فك تجميع بواسطة هذا العمود + + + +{% endhighlight %} +{% highlight razor tabtitle="App.razor" %} + + + ... + + + ... + + +{% endhighlight %} +{% endtabs %} + +![Customize group caption text using locale](./images/blazor-datagrid-customize-group-caption-text-locale.png) + ## Render custom component in group caption The Syncfusion® Blazor DataGrid offers the flexibility to render a custom component in the group caption, providing advanced or interactive functionality within the group caption row. This feature allows you to display custom UI elements, like buttons, icons, or dropdowns, and handle user interactions directly within the group caption. diff --git a/blazor/datagrid/images/blazor-datagrid-customize-group-caption-text-locale.PNG b/blazor/datagrid/images/blazor-datagrid-customize-group-caption-text-locale.PNG new file mode 100644 index 0000000000000000000000000000000000000000..95886bf5a963f105f9a49d223d3a1b2e9d22a332 GIT binary patch literal 86024 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 literal 0 HcmV?d00001 From 1620cc1f96f033040a8e97b7a9d8b362f43ac1a9 Mon Sep 17 00:00:00 2001 From: vikramsundarajan <129823420+vikramsundarajan@users.noreply.github.com> Date: Mon, 5 May 2025 14:23:30 +0530 Subject: [PATCH 3/5] 952529: Modified --- blazor/datagrid/grouping.md | 6 +++--- blazor/datagrid/row-template.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/blazor/datagrid/grouping.md b/blazor/datagrid/grouping.md index 6fa63a88f9..57e1093f1a 100644 --- a/blazor/datagrid/grouping.md +++ b/blazor/datagrid/grouping.md @@ -544,11 +544,11 @@ The following example demonstrates how to sort the **CustomerID** column by sett ## Group with paging -The Sycnfusion Blazor DataGrid supports grouping columns along with paging. When grouping is applied, the grid displays aggregate values and group counts based on the current page by default. This means the group caption and group summary/footer will only reflect data from the current page. +The Sycnfusion Blazor DataGrid supports grouping columns along with paging. When grouping is applied, the Grid displays aggregate values and group counts based on the current page by default. This means the group caption and group summary/footer will only reflect data from the current page. -To calculate aggregates and total item counts across all pages, set the [DisablePageWiseAggregates](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridGroupSettings.html#Syncfusion_Blazor_Grids_GridGroupSettings_DisablePageWiseAggregates) property to **false** in the `GridGroupSettings`. This allows the grid to display complete aggregate information for each group, regardless of paging. +To calculate aggregates and total item counts across all pages, set the [DisablePageWiseAggregates](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridGroupSettings.html#Syncfusion_Blazor_Grids_GridGroupSettings_DisablePageWiseAggregates) property to **false** in the `GridGroupSettings`. This allows the Grid to display complete aggregate information for each group, regardless of paging. -> If remote data is bound to grid dataSource, two requests will be sent when performing grouping action one for getting the grouped data and another for getting aggregate details and total items count. +> If remote data is bound to Grid dataSource, two requests will be sent when performing grouping action one for getting the grouped data and another for getting aggregate details and total items count. ## Group by format diff --git a/blazor/datagrid/row-template.md b/blazor/datagrid/row-template.md index f714ee1a04..430eac94f8 100644 --- a/blazor/datagrid/row-template.md +++ b/blazor/datagrid/row-template.md @@ -527,7 +527,7 @@ public static List Orders = new List(); The Syncfusion Blazor DataGrid provides the flexibility to include custom controls, such as a Chart, within the rows of the Grid. This feature enhances Grid interactivity by allowing graphical representations of data instead of plain text. -To render a Syncfusion Blazor Chart within a row template of the DataGrid, use the [RowTemplate](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridTemplates.html#Syncfusion_Blazor_Grids_GridTemplates_RowTemplate) property. This property accepts a Razor template that defines the layout for each row, enabling rich data visualization directly inside the Grid. +To render a Syncfusion Blazor Chart within a row template of the Grid, use the [RowTemplate](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridTemplates.html#Syncfusion_Blazor_Grids_GridTemplates_RowTemplate) property. This property accepts a Razor template that defines the layout for each row, enabling rich data visualization directly inside the Grid. Here is an example that demonstrates rendering Syncfusion Chart within a row template: From 3e3b5b628e9f1dc4074b7cf87918851238b37bd8 Mon Sep 17 00:00:00 2001 From: vikramsundarajan <129823420+vikramsundarajan@users.noreply.github.com> Date: Thu, 8 May 2025 12:17:33 +0530 Subject: [PATCH 4/5] 952529: Modified the changes based on provided correction --- blazor/datagrid/grouping.md | 13 ------ blazor/datagrid/row-template.md | 2 +- blazor/datagrid/sorting.md | 83 ++++++++++++++++++++++----------- 3 files changed, 56 insertions(+), 42 deletions(-) diff --git a/blazor/datagrid/grouping.md b/blazor/datagrid/grouping.md index 57e1093f1a..aca47201a6 100644 --- a/blazor/datagrid/grouping.md +++ b/blazor/datagrid/grouping.md @@ -542,14 +542,6 @@ The following example demonstrates how to sort the **CustomerID** column by sett {% previewsample "https://blazorplayground.syncfusion.com/embed/hjhUCMZGLoABNhxp?appbar=false&editor=false&result=true&errorlist=false&theme=bootstrap5" %} -## Group with paging - -The Sycnfusion Blazor DataGrid supports grouping columns along with paging. When grouping is applied, the Grid displays aggregate values and group counts based on the current page by default. This means the group caption and group summary/footer will only reflect data from the current page. - -To calculate aggregates and total item counts across all pages, set the [DisablePageWiseAggregates](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridGroupSettings.html#Syncfusion_Blazor_Grids_GridGroupSettings_DisablePageWiseAggregates) property to **false** in the `GridGroupSettings`. This allows the Grid to display complete aggregate information for each group, regardless of paging. - -> If remote data is bound to Grid dataSource, two requests will be sent when performing grouping action one for getting the grouped data and another for getting aggregate details and total items count. - ## Group by format By default, columns are grouped by the data or value present for the particular row. However, you can also group numeric or datetime columns based on the specified format. To enable this feature, you need to set the [EnableGroupByFormat](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridColumn.html#Syncfusion_Blazor_Grids_GridColumn_EnableGroupByFormat) @@ -1157,11 +1149,6 @@ The following example demonstrates how the `Grouping` and `Grouped` events work {% endtabs %} {% previewsample "https://blazorplayground.syncfusion.com/embed/VDLpNCtffrjjtSYQ?appbar=false&editor=false&result=true&errorlist=false&theme=bootstrap5" %} - -## Limitations - -* Grouping is not compatible with the following features: - 1. Autofill ## See Also diff --git a/blazor/datagrid/row-template.md b/blazor/datagrid/row-template.md index 430eac94f8..8f956c082c 100644 --- a/blazor/datagrid/row-template.md +++ b/blazor/datagrid/row-template.md @@ -527,7 +527,7 @@ public static List Orders = new List(); The Syncfusion Blazor DataGrid provides the flexibility to include custom controls, such as a Chart, within the rows of the Grid. This feature enhances Grid interactivity by allowing graphical representations of data instead of plain text. -To render a Syncfusion Blazor Chart within a row template of the Grid, use the [RowTemplate](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridTemplates.html#Syncfusion_Blazor_Grids_GridTemplates_RowTemplate) property. This property accepts a Razor template that defines the layout for each row, enabling rich data visualization directly inside the Grid. +To render a Syncfusion Blazor Chart within a row template of the Grid, use the [RowTemplate](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridTemplates.html#Syncfusion_Blazor_Grids_GridTemplates_RowTemplate) property. This property accepts a HTML template that defines the layout for each row, enabling rich data visualization directly inside the Grid. Here is an example that demonstrates rendering Syncfusion Chart within a row template: diff --git a/blazor/datagrid/sorting.md b/blazor/datagrid/sorting.md index 11811fba0a..5c044ae18b 100644 --- a/blazor/datagrid/sorting.md +++ b/blazor/datagrid/sorting.md @@ -535,44 +535,31 @@ The following example demonstrates how to define custom sort comparer function f ### Display null values always at bottom -By default, null values in the Syncfusion Blazor DataGrid are displayed at the top when sorting in descending order and at the bottom when sorting in ascending order. However, there may be scenarios where null values need to be consistently shown at the bottom of the grid, regardless of the sort direction. This can be achieved by using the [SortComparer](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridColumn.html#Syncfusion_Blazor_Grids_GridColumn_SortComparer) property of the column. +By default, null values in the Syncfusion Blazor DataGrid are displayed at the top when sorting in descending order and at the bottom when sorting in ascending order. However, there may be scenarios where null values need to be consistently shown at the bottom of the Grid, regardless of the sort direction. This can be achieved by using the [SortComparer](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridColumn.html#Syncfusion_Blazor_Grids_GridColumn_SortComparer) property of the column. This feature is particularly useful when working with data sets where null values might need to be clearly separated from actual data entries. -The `SortComparer` allows custom comparison logic for sorting. By implementing a custom comparer, null values can be handled separately and positioned at the end of the sorted list in both ascending and descending orders. +The `SortComparer` allows custom comparison logic for sorting. By implementing a custom comparer, null values can be handled separately and positioned at the end of the sorted list in both ascending and descending orders. You can use the [Sorting](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridEvents-1.html#Syncfusion_Blazor_Grids_GridEvents_1_Sorting) event to detect the sort direction and apply the appropriate logic in the custom comparer. -The following example demonstrates how to configure the `SortComparer` for the **CustomrID** column to always place null values at the bottom: +The example below demonstrates how to display null values at the bottom of the Grid while sorting the **CustomerID** column in both ascending and descending order. {% tabs %} {% highlight razor tabtitle="Index.razor" %} @using Syncfusion.Blazor.Grids - - - + + - - - - + + + + @code { - public List Orders { get; set; } + public SfGrid Grid { get; set; } + public List OrderData { get; set; } protected override void OnInitialized() { - Orders = Enumerable.Range(1, 12).Select(x => new Order() - { - OrderID = 1000 + x, - CustomerID = (new string[] { "ALFKI", "ANANTR", "ANTON", "BLONP", "BOLID", "", "CHARLIE", "DELTA", "ECHO", "FOXTROT", "GOLF", "HOTEL", "INDIA", "JULIET" })[new Random().Next(14)], - Freight = 2.1 * x, - OrderDate = DateTime.Now.AddDays(-x), - }).ToList(); - } - public class Order - { - public int? OrderID { get; set; } - public string CustomerID { get; set; } - public DateTime? OrderDate { get; set; } - public double? Freight { get; set; } + OrderData = OrderDetails.GetAllRecords(); } static bool flag = true; public void SortingHandler(SortingEventArgs args) @@ -587,14 +574,16 @@ The following example demonstrates how to configure the `SortComparer` for the * flag = false; } } + public class CustomComparer : IComparer { public int Compare(object XRowDataToCompare, object YRowDataToCompare) { - Order XRowData = XRowDataToCompare as Order; - Order YRowData = YRowDataToCompare as Order; + OrderDetails XRowData = XRowDataToCompare as OrderDetails; + OrderDetails YRowData = YRowDataToCompare as OrderDetails; string value1 = XRowData.CustomerID; string value2 = YRowData.CustomerID; + if (flag == true){ if (string.IsNullOrEmpty(value1) && string.IsNullOrEmpty(value2)) { @@ -628,9 +617,47 @@ The following example demonstrates how to configure the `SortComparer` for the * } } {% endhighlight %} +{% highlight c# tabtitle="OrderData.cs" %} +public class OrderDetails + { + public static List order = new List(); + public OrderDetails(int OrderID, string CustomerId, int EmployeeId, double Freight, DateTime OrderDate) + { + this.OrderID = OrderID; + this.CustomerID = CustomerId; + this.EmployeeID = EmployeeId; + this.Freight = Freight; + this.OrderDate = OrderDate; + } + public static List GetAllRecords() + { + if (order.Count == 0) + { + order.Add(new OrderDetails(10248, "VINET", 5, 32.38, new DateTime(1996, 7, 4))); + order.Add(new OrderDetails(10249, "", 6, 11.61, new DateTime(1996, 7, 5))); + order.Add(new OrderDetails(10250, "HANAR", 4, 65.83,new DateTime(1996, 7, 8))); + order.Add(new OrderDetails(10251, "VICTE", 3, 41.34, new DateTime(1996, 7, 8))); + order.Add(new OrderDetails(10252, "SUPRD", 4, 51.3, new DateTime(1996, 7, 9))); + order.Add(new OrderDetails(10253, "", 3, 58.17, new DateTime(1996, 7, 10))); + order.Add(new OrderDetails(10254, "CHOPS", 5, 22.98, new DateTime(1996, 7, 11))); + order.Add(new OrderDetails(10255, "RICSU", 9, 148.33, new DateTime(1996, 7, 12))); + order.Add(new OrderDetails(10256, "WELLI", 3, 13.97, new DateTime(1996, 7, 15))); + order.Add(new OrderDetails(10257, "HILAA", 4, 81.91, new DateTime(1996, 7, 16))); + order.Add(new OrderDetails(10258, "", 1, 140.51, new DateTime(1996, 7, 17))); + order.Add(new OrderDetails(10259, "CENTC", 4, 3.25, new DateTime(1996, 7, 18))); + } + return order; + } + public int OrderID { get; set; } + public string CustomerID { get; set; } + public int EmployeeID { get; set; } + public double Freight { get; set; } + public DateTime OrderDate { get; set; } +} +{% endhighlight %} {% endtabs %} -{% previewsample "https://blazorplayground.syncfusion.com/embed/VZBIZTMpUEvLsNyW?appbar=false&editor=false&result=true&errorlist=false&theme=bootstrap5" %} +{% previewsample "https://blazorplayground.syncfusion.com/embed/rtBoDSNvhpqoYagK?appbar=false&editor=false&result=true&errorlist=false&theme=bootstrap5" %} ## Touch interaction From 67f0e8a949878f9b18a7ae450f459e3810118718 Mon Sep 17 00:00:00 2001 From: vikramsundarajan <129823420+vikramsundarajan@users.noreply.github.com> Date: Mon, 12 May 2025 12:51:28 +0530 Subject: [PATCH 5/5] 952529: Added the colon --- blazor/datagrid/caption-template.md | 2 +- blazor/datagrid/sorting.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/blazor/datagrid/caption-template.md b/blazor/datagrid/caption-template.md index 97ab3e2924..e3966fe1bd 100644 --- a/blazor/datagrid/caption-template.md +++ b/blazor/datagrid/caption-template.md @@ -184,7 +184,7 @@ The following example demonstrates how to add a custom text to the group caption The Syncfusion Blazor DataGrid allows you to customize the group caption text based on the locale. This feature enables you to display localized text or translated content in the group captions according to different language or region settings. -The following example demonstrates, how to customize group caption text based on **ar** locale. +The following example demonstrates, how to customize group caption text based on **ar** locale: {% tabs %} {% highlight razor tabtitle="Index.razor" %} diff --git a/blazor/datagrid/sorting.md b/blazor/datagrid/sorting.md index 5c044ae18b..c639956be4 100644 --- a/blazor/datagrid/sorting.md +++ b/blazor/datagrid/sorting.md @@ -539,7 +539,7 @@ By default, null values in the Syncfusion Blazor DataGrid are displayed at the t The `SortComparer` allows custom comparison logic for sorting. By implementing a custom comparer, null values can be handled separately and positioned at the end of the sorted list in both ascending and descending orders. You can use the [Sorting](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridEvents-1.html#Syncfusion_Blazor_Grids_GridEvents_1_Sorting) event to detect the sort direction and apply the appropriate logic in the custom comparer. -The example below demonstrates how to display null values at the bottom of the Grid while sorting the **CustomerID** column in both ascending and descending order. +The example below demonstrates how to display null values at the bottom of the Grid while sorting the **CustomerID** column in both ascending and descending order: {% tabs %} {% highlight razor tabtitle="Index.razor" %}