From a1ed1a9594617ff88745b4c5863018e722559c9d Mon Sep 17 00:00:00 2001 From: Vinitha Balasubramanian Date: Wed, 8 Jan 2025 17:02:58 +0530 Subject: [PATCH 1/3] 930084: Revamp dialog edit topics in dev --- blazor/datagrid/dialog-editing.md | 809 +++++++++++++++++++++++++----- 1 file changed, 677 insertions(+), 132 deletions(-) diff --git a/blazor/datagrid/dialog-editing.md b/blazor/datagrid/dialog-editing.md index c178424a62..2c1c6fe90b 100644 --- a/blazor/datagrid/dialog-editing.md +++ b/blazor/datagrid/dialog-editing.md @@ -7,165 +7,676 @@ control: DataGrid documentation: ug --- -# Dialog Editing in Blazor DataGrid Component +# Dialog editing in Blazor DataGrid component -In dialog edit mode, when you start editing the currently selected row data will be shown on a dialog. You can change the cell values and save edited data to the data source. To enable Dialog edit, set the [EditSettings.Mode](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridEditSettings.html#Syncfusion_Blazor_Grids_GridEditSettings_Mode) as **Dialog**. +Dialog editing is a feature in the Grid component that allows you to edit the data of the currently selected row using a dialog window. With dialog editing, you can easily modify cell values and save the changes back to the data source.This feature is particularly beneficial in scenarios where you need to quickly modify data without navigating to a separate page or view, and it streamlines the process of editing multiple cells. -```cshtml +To enable dialog editing in grid component, you need to set the [GridEditSettings.Mode](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridEditSettings.html#Syncfusion_Blazor_Grids_GridEditSettings_Mode) property to **Dialog**. This property determines the editing mode for the grid, and when set to **Dialog**, it enables the dialog editing feature. + +Here's an example how to enable dialog editing in the blazor grid component: + +{% tabs %} +{% highlight razor tabtitle="Index.razor" %} @using Syncfusion.Blazor.Grids - - + + - - - - - + + + + +@code { + public List OrderData { get; set; } + protected override void OnInitialized() + { + OrderData = OrderDetails.GetAllRecords(); + } +} +{% endhighlight %} +{% highlight c# tabtitle="OrderDetails.cs" %} +public class OrderDetails +{ + public static List Order = new List(); + public OrderDetails(int OrderID, string CustomerId, double Freight, string ShipCountry) + { + this.OrderID = OrderID; + this.CustomerID = CustomerId; + this.Freight = Freight; + this.ShipCountry = ShipCountry; + } + public static List GetAllRecords() + { + if (Order.Count == 0) + { + Order.Add(new OrderDetails(10248, "VINET", 32.38, "France")); + Order.Add(new OrderDetails(10249, "TOMSP", 11.61, "Germany")); + Order.Add(new OrderDetails(10250, "HANAR", 65.83, "Brazil")); + Order.Add(new OrderDetails(10251, "VICTE", 41.34, "France")); + Order.Add(new OrderDetails(10252, "SUPRD", 51.3, "Belgium")); + Order.Add(new OrderDetails(10253, "HANAR", 58.17, "Brazil")); + Order.Add(new OrderDetails(10254, "CHOPS", 22.98, "Switzerland")); + Order.Add(new OrderDetails(10255, "RICSU", 148.33, "Switzerland")); + Order.Add(new OrderDetails(10256, "WELLI", 13.97, "Brazil")); + Order.Add(new OrderDetails(10257, "HILAA", 81.91, "Venezuela")); + Order.Add(new OrderDetails(10258, "ERNSH", 140.51, "Austria")); + Order.Add(new OrderDetails(10259, "CENTC", 3.25, "Mexico")); + Order.Add(new OrderDetails(10260, "OTTIK", 55.09, "Germany")); + Order.Add(new OrderDetails(10261, "QUEDE", 3.05, "Brazil")); + Order.Add(new OrderDetails(10262, "RATTC", 48.29, "USA")); + } + return Order; + } + public int OrderID { get; set; } + public string CustomerID { get; set; } + public double Freight { get; set; } + public string ShipCountry { get; set; } +} +{% endhighlight %} +{% endtabs %} + +{% previewsample "https://blazorplayground.syncfusion.com/embed/htBTihBtqxaHFdKg?appbar=false&editor=false&result=true&errorlist=false&theme=bootstrap5" %} + +## Customize the edit dialog + +The edit dialog in the Grid component allows you to customize its appearance and behavior based on the type of action being performed, such as editing or adding a record. You can modify properties like header text, showCloseIcon, and height to tailor the edit dialog to your specific requirements. -@code{ - public List Orders { get; set; } +To customize the edit dialog, you can use [HeaderTemplate](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridEditSettings.html#Syncfusion_Blazor_Grids_GridEditSettings_HeaderTemplate) and [FooterTemplate](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridEditSettings.html#Syncfusion_Blazor_Grids_GridEditSettings_FooterTemplate) of the [GridEditSettings](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridEditSettings.html) property to customize the appearance of edit dialog. +The following example that demonstrates how to customize the edit dialog. + +{% tabs %} +{% highlight razor tabtitle="Index.razor" %} +@using Syncfusion.Blazor.Grids +@using Syncfusion.Blazor.Buttons + + + + + @{ + var DialogHeader = GetHeader((context as OrderDetails)); + @DialogHeader + } + + + Submit + Discard + + + + + + + + + +@code { + public SfGrid Grid { get; set; } + public List OrderData { get; set; } protected override void OnInitialized() { - Orders = Enumerable.Range(1, 75).Select(x => new Order() + OrderData = OrderDetails.GetAllRecords(); + } + public DialogSettings DialogParams { get; set; } = new DialogSettings { Height= "300px", Width="300px" }; + public string GetHeader(OrderDetails value) + { + return value.OrderID == 0 + ? "New Customer" + : "Edit Record of " + value.CustomerID; + } + public async Task CancelEdit() + { + await Grid.CloseEditAsync(); //Cancel editing action + } + public async Task SaveEdit() + { + await Grid.EndEditAsync(); //Save the edited/added data to Grid + } +} +{% endhighlight %} +{% highlight c# tabtitle="OrderDetails.cs" %} +public class OrderDetails +{ + public static List Order = new List(); + public OrderDetails(int OrderID, string CustomerId, double Freight, string ShipCountry) + { + this.OrderID = OrderID; + this.CustomerID = CustomerId; + this.Freight = Freight; + this.ShipCountry = ShipCountry; + } + public static List GetAllRecords() + { + if (Order.Count == 0) { - OrderID = 1000 + x, - CustomerID = (new string[] { "ALFKI", "ANANTR", "ANTON", "BLONP", "BOLID" })[new Random().Next(5)], - Freight = 2.1 * x, - OrderDate = DateTime.Now.AddDays(-x), - ShipCountry = (new string[] { "USA", "UK", "CHINA", "RUSSIA", "INDIA" })[new Random().Next(5)] - }).ToList(); + Order.Add(new OrderDetails(10248, "VINET", 32.38, "France")); + Order.Add(new OrderDetails(10249, "TOMSP", 11.61, "Germany")); + Order.Add(new OrderDetails(10250, "HANAR", 65.83, "Brazil")); + Order.Add(new OrderDetails(10251, "VICTE", 41.34, "France")); + Order.Add(new OrderDetails(10252, "SUPRD", 51.3, "Belgium")); + Order.Add(new OrderDetails(10253, "HANAR", 58.17, "Brazil")); + Order.Add(new OrderDetails(10254, "CHOPS", 22.98, "Switzerland")); + Order.Add(new OrderDetails(10255, "RICSU", 148.33, "Switzerland")); + Order.Add(new OrderDetails(10256, "WELLI", 13.97, "Brazil")); + Order.Add(new OrderDetails(10257, "HILAA", 81.91, "Venezuela")); + Order.Add(new OrderDetails(10258, "ERNSH", 140.51, "Austria")); + Order.Add(new OrderDetails(10259, "CENTC", 3.25, "Mexico")); + Order.Add(new OrderDetails(10260, "OTTIK", 55.09, "Germany")); + Order.Add(new OrderDetails(10261, "QUEDE", 3.05, "Brazil")); + Order.Add(new OrderDetails(10262, "RATTC", 48.29, "USA")); + } + return Order; } + public int OrderID { get; set; } + public string CustomerID { get; set; } + public double Freight { get; set; } + public string ShipCountry { get; set; } +} +{% endhighlight %} +{% endtabs %} + +{% previewsample "https://blazorplayground.syncfusion.com/embed/VDVyZWjvKbTMIaIU?appbar=false&editor=false&result=true&errorlist=false&theme=bootstrap5" %} + +> * The Grid add or edit dialog element has the max-height property, which is calculated based on the available window height. So, in the normal window (1920 x 1080), it is possible to set the dialog's height up to 658px. +> * You can refer to our [Blazor DataGrid](https://www.syncfusion.com/blazor-components/blazor-datagrid) feature tour page for its groundbreaking feature representations. You can also explore our [Blazor DataGrid example](https://blazor.syncfusion.com/demos/datagrid/overview?theme=bootstrap4) to understand how to present and manipulate data. - public class Order +## Show or hide columns in dialog editing + +The show or hide columns in dialog editing feature in the grid allows you to dynamically control the visibility of columns while editing in the dialog edit mode. This feature is useful when you want to display specific columns based on the type of action being performed, such as editing an existing record or adding a new record. To achieve this, you can utilize the following events of the Grid. + +1. [RowCreating](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridEvents-1.html#Syncfusion_Blazor_Grids_GridEvents_1_RowCreating): Triggered before an add action is executed in the grid. + +2. [RowEditing](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridEvents-1.html#Syncfusion_Blazor_Grids_GridEvents_1_RowEditing): Triggered before an edit action is executed in the grid. + +3. [RowUpdating](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridEvents-1.html#Syncfusion_Blazor_Grids_GridEvents_1_RowDeleting): Triggered before a update action is executed in the grid. + +4. [EditCanceling](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridEvents-1.html#Syncfusion_Blazor_Grids_GridEvents_1_EditCanceling): Triggered before a cancel action is executed in the grid. + +The `RowCreating` and `RowEditing` events are triggered whenever an action such as adding or editing a record is initiated in the grid. Within the events handler, you can modify the visibility of columns using the [Column.Visible](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridColumn.html#Syncfusion_Blazor_Grids_GridColumn_Visible) property. This property determines whether a column should be displayed or hidden. + +Additionally, you can reset the column visibility to its initial state using the `Column.Visible` property using `RowUpdating` and `EditCanceling` events of grid. + +In the following example, the **CustomerID** column is rendered as a hidden column, and the **ShipCountry** column is rendered as a visible column. In the edit mode, the **CustomerID** column will be changed to a visible state and the **ShipCountry** column will be changed to a hidden state. + +{% tabs %} +{% highlight razor tabtitle="Index.razor" %} +@using Syncfusion.Blazor.Grids + + + + + + + + + + + + +@code { + public SfGrid Grid { get; set; } + public List OrderData { get; set; } + protected override void OnInitialized() { - public int? OrderID { get; set; } - public string CustomerID { get; set; } - public DateTime? OrderDate { get; set; } - public double? Freight { get; set; } - public string ShipCountry { get; set; } + OrderData = OrderDetails.GetAllRecords(); + } + public void RowAddingHandler(RowCreatingEventArgs args) + { + var columns = Grid.Columns; + foreach (var column in columns) + { + if (column.Field == "CustomerID") + { + column.Visible = true; + } + } + } + public void RowEditingHandler(RowEditingEventArgs args) + { + var columns = Grid.Columns; + foreach (var column in columns) + { + if (column.Field == "CustomerID") + { + column.Visible = true; + } + else if (column.Field == "ShipCountry") + { + column.Visible = false; + } + } + } + public void RowUpdatingHandler(RowUpdatingEventArgs args) + { + var columns = Grid.Columns; + foreach (var column in columns) + { + if (column.Field == "CustomerID") + { + column.Visible = false; + } + else if (column.Field == "ShipCountry") + { + column.Visible = true; + } + } + } + public void RowCancelingHandler(EditCancelingEventArgs args) + { + var columns = Grid.Columns; + foreach (var column in columns) + { + if (column.Field == "CustomerID") + { + column.Visible = false; + } + else if (column.Field == "ShipCountry") + { + column.Visible = true; + } + } } } +{% endhighlight %} +{% highlight c# tabtitle="OrderDetails.cs" %} +public class OrderDetails +{ + public static List Order = new List(); + public OrderDetails(int OrderID, string CustomerId, double Freight, string ShipCountry) + { + this.OrderID = OrderID; + this.CustomerID = CustomerId; + this.Freight = Freight; + this.ShipCountry = ShipCountry; + } + public static List GetAllRecords() + { + if (Order.Count == 0) + { + Order.Add(new OrderDetails(10248, "VINET", 32.38, "France")); + Order.Add(new OrderDetails(10249, "TOMSP", 11.61, "Germany")); + Order.Add(new OrderDetails(10250, "HANAR", 65.83, "Brazil")); + Order.Add(new OrderDetails(10251, "VICTE", 41.34, "France")); + Order.Add(new OrderDetails(10252, "SUPRD", 51.3, "Belgium")); + Order.Add(new OrderDetails(10253, "HANAR", 58.17, "Brazil")); + Order.Add(new OrderDetails(10254, "CHOPS", 22.98, "Switzerland")); + Order.Add(new OrderDetails(10255, "RICSU", 148.33, "Switzerland")); + Order.Add(new OrderDetails(10256, "WELLI", 13.97, "Brazil")); + Order.Add(new OrderDetails(10257, "HILAA", 81.91, "Venezuela")); + Order.Add(new OrderDetails(10258, "ERNSH", 140.51, "Austria")); + Order.Add(new OrderDetails(10259, "CENTC", 3.25, "Mexico")); + Order.Add(new OrderDetails(10260, "OTTIK", 55.09, "Germany")); + Order.Add(new OrderDetails(10261, "QUEDE", 3.05, "Brazil")); + Order.Add(new OrderDetails(10262, "RATTC", 48.29, "USA")); + } + return Order; + } + public int OrderID { get; set; } + public string CustomerID { get; set; } + public double Freight { get; set; } + public string ShipCountry { get; set; } +} +{% endhighlight %} +{% endtabs %} -``` - -The following screenshot represents Editing in Dialog Mode. +{% previewsample "https://blazorplayground.syncfusion.com/embed/VXrzWVLAqtMKVgod?appbar=false&editor=false&result=true&errorlist=false&theme=bootstrap5" %} -![Blazor DataGrid with Dialog Editing](./images/blazor-datagrid-dialog-editing.png) +## Use wizard like dialog editing -## Customize the edit dialog +Wizard-like dialog editing is a powerful feature in the Grid component that enables the creation of intuitive step-by-step forms. This feature provides a structured approach to form completion or data entry by breaking down the process into manageable steps.This feature is particularly useful when you have complex forms that need to be broken down into smaller sections to guide you through the data entry process. -You can use [HeaderTemplate](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridEditSettings.html#Syncfusion_Blazor_Grids_GridEditSettings_HeaderTemplate) and [FooterTemplate](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridEditSettings.html#Syncfusion_Blazor_Grids_GridEditSettings_FooterTemplate) of the [GridEditSettings](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridEditSettings.html) component to customize the appearance of edit dialog. +To achieve wizard-like dialog editing in the grid component, you can use the template feature. This feature allows you to define your own custom editing template using the [GridEditSettings.Mode](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridEditSettings.html#Syncfusion_Blazor_Grids_GridEditSettings_Mode) property set to **Dialog** and the [Template](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridEditSettings.html#Syncfusion_Blazor_Grids_GridEditSettings_Template) property of [GridEditSettings](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridEditSettings.html) to specify the template variable that defines the editors for each step of the wizard. -In the below example we have changed the dialog's header text and footer button content for editing and adding records. +The following example demonstrate the wizard like editing in the grid with the unobtrusive validation. -```cshtml -@using Syncfusion.Blazor.Buttons +{% tabs %} +{% highlight razor tabtitle="Index.razor" %} @using Syncfusion.Blazor.Grids +@using Syncfusion.Blazor.Buttons +@using Syncfusion.Blazor.Inputs +@using Syncfusion.Blazor.DropDowns - - - + + + + - @ButtonText - Cancel +
+ @if (CurrentTab != 0) + { + Previous + } +
+
+ Save + @if (CurrentTab != 2) + { + Next + } +
- - - - - + + + + + +
-@code{ - SfGrid Grid { get; set; } - public List Orders { get; set; } - public string Header { get; set; } - public string ButtonText { get; set; } - public string GetHeader(Order Value) +@code { + private SfGrid Grid; + private Boolean Check = false; + private OrderDetails CurrentEditingRecord { get; set; } + public List OrderData { get; set; } + protected override void OnInitialized() + { + OrderData = OrderDetails.GetAllRecords(); + } + private bool IsCurrentTabValid() + { + if (CurrentEditingRecord == null) return false; + if (CurrentTab == 0) + { + return CurrentEditingRecord.OrderID != 0 && !string.IsNullOrWhiteSpace(CurrentEditingRecord.CustomerID); + } + else if (CurrentTab == 1) + { + return CurrentEditingRecord.Freight > 0; + } + return true; + } + private int CurrentTab { get; set; } = 0; + public void PreviousDialog() { - if (Value.OrderID == null) + if (IsCurrentTabValid() && CurrentTab > 0) { - ButtonText = "Insert"; - return "Insert New Order"; + CurrentTab--; + Grid.PreventRender(false); } - else + } + public void NextDialog() + { + if (IsCurrentTabValid() && CurrentTab < 2) { - ButtonText = "Save Changes"; - return "Edit Record Details of " + Value.OrderID.ToString(); + CurrentTab++; + Grid.PreventRender(false); } } - public async Task Cancel() + public void SaveDialog() + { + Grid.EndEditAsync(); + } + public void RowCreating(RowCreatingEventArgs args) { - await Grid.CloseEdit(); //Cancel editing action + Check = true; + CurrentTab = 0; + CurrentEditingRecord = args.Data; } - public async Task Save() + public void OnBeginEdit(BeginEditArgs args) { - await Grid.EndEdit(); //Save the edited/added data to Grid + Check = false; + CurrentTab = 0; + CurrentEditingRecord = args.RowData; } - protected override void OnInitialized() + public class City + { + public string ShipCity { get; set; } + } + List CityName = new List + { + new City() { ShipCity= "Reims" }, + new City() { ShipCity= "Münster" }, + new City() { ShipCity = "Rio de Janeiro" }, + new City() { ShipCity = "Lyon" }, + new City() { ShipCity = "Charleroi" }, + new City() { ShipCity = "Genève" }, + new City() { ShipCity = "Resende" }, + new City() { ShipCity = "San Cristóbal" }, + new City() { ShipCity = "Graz" }, + new City() { ShipCity = "México D.F." }, + new City() { ShipCity = "Köln" }, + new City() { ShipCity = "Albuquerque" }, + }; + public class Country + { + public string ShipCountry { get; set; } + } + List CountryName = new List { - Orders = Enumerable.Range(1, 75).Select(x => new Order() + new Country() { ShipCountry= "France"}, + new Country() { ShipCountry= "Brazil"}, + new Country() { ShipCountry= "Germany"}, + new Country() { ShipCountry= "Belgium"}, + new Country() { ShipCountry= "Austria"}, + new Country() { ShipCountry= "Switzerland"}, + new Country() { ShipCountry= "Venezuela"}, + new Country() { ShipCountry= "Mexico"}, + new Country() { ShipCountry= "USA"}, + }; +} +{% endhighlight %} +{% highlight c# tabtitle="OrderDetails.cs" %} +public class OrderDetails +{ + public static List Order = new List(); + public OrderDetails(int OrderID, string CustomerId, double Freight, string ShipCountry, string ShipCity, bool Verified) + { + this.OrderID = OrderID; + this.CustomerID = CustomerId; + this.Freight = Freight; + this.ShipCountry = ShipCountry; + this.ShipCity = ShipCity; + this.Verified = Verified; + } + public static List GetAllRecords() + { + if (Order.Count == 0) { - OrderID = 1000 + x, - CustomerID = (new string[] { "ALFKI", "ANANTR", "ANTON", "BLONP", "BOLID" })[new Random().Next(5)], - Freight = 2.1 * x, - OrderDate = DateTime.Now.AddDays(-x), - ShipCountry = (new string[] { "USA", "UK", "CHINA", "RUSSIA", "INDIA" })[new Random().Next(5)] - }).ToList(); + Order.Add(new OrderDetails(10248, "VINET", 32.38, "France", "Reims", true)); + Order.Add(new OrderDetails(10249, "TOMSP", 11.61, "Germany", "Münster", false)); + Order.Add(new OrderDetails(10250, "HANAR", 65.83, "Brazil", "Rio de Janeiro", true)); + Order.Add(new OrderDetails(10251, "VICTE", 41.34, "France", "Lyon", true)); + Order.Add(new OrderDetails(10252, "SUPRD", 51.3, "Belgium", "Charleroi", true)); + Order.Add(new OrderDetails(10253, "HANAR", 58.17, "Brazil", "Rio de Janeiro", true)); + Order.Add(new OrderDetails(10254, "CHOPS", 22.98, "Switzerland", "Bern", false)); + Order.Add(new OrderDetails(10255, "RICSU", 148.33, "Switzerland", "Genève", true)); + Order.Add(new OrderDetails(10256, "WELLI", 13.97, "Brazil", "Resende", false)); + Order.Add(new OrderDetails(10257, "HILAA", 81.91, "Venezuela", "San Cristóbal", true)); + Order.Add(new OrderDetails(10258, "ERNSH", 140.51, "Austria", "Graz", true)); + Order.Add(new OrderDetails(10259, "CENTC", 3.25, "Mexico", "México D.F.", false)); + Order.Add(new OrderDetails(10260, "OTTIK", 55.09, "Germany", "Köln", true)); + Order.Add(new OrderDetails(10261, "QUEDE", 3.05, "Brazil", "Rio de Janeiro", false)); + Order.Add(new OrderDetails(10262, "RATTC", 48.29, "USA", "Albuquerque", true)); + } + return Order; } + public int OrderID { get; set; } + public string CustomerID { get; set; } + public double Freight { get; set; } + public string ShipCountry { get; set; } + public string ShipCity { get; set; } + public bool Verified { get; set; } +} +{% endhighlight %} +{% endtabs %} + +{% previewsample "https://blazorplayground.syncfusion.com/embed/BDLyZMjvJXWZYAiP?appbar=false&editor=false&result=true&errorlist=false&theme=bootstrap5" %} + +## Customize add/edit dialog footer + +The Customize add/edit dialog footer feature in the grid allows you to modify the footer section of the dialog that appears when editing the currently selected row or adding a new row. By default, the dialog displays two buttons in the footer section: Save and Cancel, which allow you to save or discard the changes made in the dialog. This feature is particularly helpful when you want to add custom buttons to the dialog's footer, implement specific actions, or customize the appearance of the buttons, such as changing their color or size in the dialog's footer. This can be achieved using the [FooterTemplate](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridEditSettings.html#Syncfusion_Blazor_Grids_GridEditSettings_FooterTemplate) of the [GridEditSettings](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridEditSettings.html) property of the Grid component. + +In the following sample, the action for the custom button can be customized using the `FooterTemplate` property of the `GridEditSettings`. + +{% tabs %} +{% highlight razor tabtitle="Index.razor" %} +@using Syncfusion.Blazor.Grids - public class Order + + + + Discard + Submit + + + + + + + + + +@code { + public SfGrid Grid { get; set; } + public List OrderData { get; set; } + protected override void OnInitialized() { - public int? OrderID { get; set; } - public string CustomerID { get; set; } - public DateTime? OrderDate { get; set; } - public double? Freight { get; set; } - public string ShipCountry { get; set; } + OrderData = OrderDetails.GetAllRecords(); + } + public async Task CancelEdit() + { + await Grid.CloseEditAsync(); + } + public async Task SaveEdit() + { + await Grid.EndEditAsync(); } } -``` +{% endhighlight %} +{% highlight c# tabtitle="OrderDetails.cs" %} +public class OrderDetails +{ + public static List Order = new List(); + public OrderDetails(int OrderID, string CustomerId, double Freight, string ShipCountry) + { + this.OrderID = OrderID; + this.CustomerID = CustomerId; + this.Freight = Freight; + this.ShipCountry = ShipCountry; + } + public static List GetAllRecords() + { + if (Order.Count == 0) + { + Order.Add(new OrderDetails(10248, "VINET", 32.38, "France")); + Order.Add(new OrderDetails(10249, "TOMSP", 11.61, "Germany")); + Order.Add(new OrderDetails(10250, "HANAR", 65.83, "Brazil")); + Order.Add(new OrderDetails(10251, "VICTE", 41.34, "France")); + Order.Add(new OrderDetails(10252, "SUPRD", 51.3, "Belgium")); + Order.Add(new OrderDetails(10253, "HANAR", 58.17, "Brazil")); + Order.Add(new OrderDetails(10254, "CHOPS", 22.98, "Switzerland")); + Order.Add(new OrderDetails(10255, "RICSU", 148.33, "Switzerland")); + Order.Add(new OrderDetails(10256, "WELLI", 13.97, "Brazil")); + Order.Add(new OrderDetails(10257, "HILAA", 81.91, "Venezuela")); + Order.Add(new OrderDetails(10258, "ERNSH", 140.51, "Austria")); + Order.Add(new OrderDetails(10259, "CENTC", 3.25, "Mexico")); + Order.Add(new OrderDetails(10260, "OTTIK", 55.09, "Germany")); + Order.Add(new OrderDetails(10261, "QUEDE", 3.05, "Brazil")); + Order.Add(new OrderDetails(10262, "RATTC", 48.29, "USA")); + } + return Order; + } + public int OrderID { get; set; } + public string CustomerID { get; set; } + public double Freight { get; set; } + public string ShipCountry { get; set; } +} +{% endhighlight %} +{% endtabs %} -N> You can refer to our [Blazor DataGrid](https://www.syncfusion.com/blazor-components/blazor-datagrid) feature tour page for its groundbreaking feature representations. You can also explore our [Blazor DataGrid example](https://blazor.syncfusion.com/demos/datagrid/overview?theme=bootstrap4) to understand how to present and manipulate data. +{% previewsample "https://blazorplayground.syncfusion.com/embed/LXrIDWZdLWqNBqts?appbar=false&editor=false&result=true&errorlist=false&theme=bootstrap5" %} ## Implement calculated column inside grid dialog editing -You can perform calculations based on the field values available in the grid's dialog edit form and display the results in another field. +You can automatically update the value of a column based on the edited value of another column using Cell Edit Template feature. This feature is useful when you want to dynamically calculate and update a column's value in real-time based on changes made to another related column. -In the following sample, the `SfNumericTextBox` component is rendered inside the dialog edit form. We have updated the **Total** column value based on the **Price** and **Quantity** columns using the [ValueChange](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Inputs.NumericTextBoxEvents-1.html#Syncfusion_Blazor_Inputs_NumericTextBoxEvents_1_ValueChange) event of the `SfNumericTextBox` and the [OnActionBegin](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridEvents-1.html#Syncfusion_Blazor_Grids_GridEvents_1_OnActionBegin) event of the Grid. +In the following sample, the `SfNumericTextBox` component is rendered inside the dialog edit form. We have updated the **Total** column value based on the **Price** and **Quantity** columns using the [ValueChange](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Inputs.NumericTextBoxEvents-1.html#Syncfusion_Blazor_Inputs_NumericTextBoxEvents_1_ValueChange) event. This is achieved in combination with the [RowUpdating](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridEvents-1.html#Syncfusion_Blazor_Grids_GridEvents_1_RowUpdating), [RowCreating](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridEvents-1.html#Syncfusion_Blazor_Grids_GridEvents_1_RowCreating), and [RowEdited](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridEvents-1.html#Syncfusion_Blazor_Grids_GridEvents_1_RowEdited) events, along with the [Template](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridEditSettings.html#Syncfusion_Blazor_Grids_GridEditSettings_Template) property of the [GridEditSettings](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridEditSettings.html). -```cshtml +{% tabs %} +{% highlight razor tabtitle="Index.razor" %} @using Syncfusion.Blazor.Grids -@using Action = Syncfusion.Blazor.Grids.Action @using Syncfusion.Blazor.Inputs +@using Syncfusion.Blazor.DropDowns - - + + - - - - + + + + + -@code{ - public List Orders { get; set; } - SfNumericTextBox PriceRef; - SfNumericTextBox QuantityRef; +@code { + private SfGrid Grid; + SfNumericTextBox PriceReference; + SfNumericTextBox QuantityReference; + private Boolean Check = false; + public double TotalValue { get; set; } + public List ProductData { get; set; } protected override void OnInitialized() { - Orders = Enumerable.Range(1, 8).Select(x => new Order() - { - CustomerID = (new string[] { "Chai", "Chang", "Aniseed Syrup", "Chef Anton's Cajun Seasoning", "Chef Anton's Gumbo Mix", "Coca-Cola", "Pepsi", "Nescafe" })[new Random().Next(8)], - Price = 2.1 * x, - Quantity = x, - Total = (2.1 * x) * x - }).ToList(); + ProductData = ProductDetails.GetAllRecords(); } - public double TotalValue { get; set; } - public void OnActionComplete(ActionEventArgs args) + public void UpdateHandler(RowUpdatingEventArgs args) { - if (args.RequestType.Equals(Action.Add) || args.RequestType.Equals(Action.BeginEdit)) - { - // Based on Add or Edit action disable the PreventRender. - args.PreventRender = false; - } + args.Data.Total = TotalValue; } - public void OnActionBegin(ActionEventArgs args) + public void AddHandler(RowCreatingEventArgs args) { - if (args.RequestType.Equals(Action.Add) || args.RequestType.Equals(Action.BeginEdit)) - { - TotalValue = args.Data.Total; - } - if (args.RequestType.Equals(Action.Save)) - { - args.Data.Total = TotalValue; - } + Check = true; + TotalValue = args.Data.Total; } - public void ValueChange() + public void EditHandler(RowEditedEventArgs args) { - TotalValue = Convert.ToDouble(PriceRef.Value * QuantityRef.Value); + Check = false; + TotalValue = args.Data.Total; } - - public class Order + private void ValueChangeHandler() { - public string? CustomerID { get; set; } - public double Price { get; set; } - public int? Quantity { get; set; } - public double Total { get; set; } + TotalValue = Convert.ToDouble(PriceReference.Value * QuantityReference.Value); + Grid.PreventRender(false); } + public class Product + { + public string ProductName { get; set; } + } + List ProductNameData = new List + { + new Product() { ProductName= "Chai" }, + new Product() { ProductName= "Chang"}, + new Product() { ProductName= "Aniseed Syrup"}, + new Product() { ProductName= "Chef Anton's Cajun Seasoning" }, + new Product() { ProductName= "Chef Anton's Gumbo Mix" }, + new Product() { ProductName= "Chef Anton's Gumbo" }, + new Product() { ProductName= "Chef Anton's Mix" }, + new Product() { ProductName= "Coca-Cola"}, + }; } +{% endhighlight %} +{% highlight c# tabtitle="ProductDetails.cs" %} +public class ProductDetails +{ + public static List Products = new List(); + public ProductDetails(int productID, string productName, double price, int quantity, double total) + { + this.ProductID = productID; + this.ProductName = productName; + this.Price = price; + this.Quantity = quantity; + this.Total = total; + } + public static List GetAllRecords() + { + if (Products.Count == 0) + { + Products.Add(new ProductDetails(1, "Chai", 18.0, 39, 702)); + Products.Add(new ProductDetails(2, "Chang", 19.0, 17, 323)); + Products.Add(new ProductDetails(3, "Aniseed Syrup", 10.0, 13, 130)); + Products.Add(new ProductDetails(4, "Chef Anton's Cajun Seasoning", 22.0, 53, 1166)); + Products.Add(new ProductDetails(5, "Chef Anton's Gumbo Mix", 21.35, 22, 469.7)); + Products.Add(new ProductDetails(6, "Chef Anton's Gumbo", 23.35, 5, 116.75)); + Products.Add(new ProductDetails(7, "Chef Anton's Mix", 25.35, 47, 1191.45)); + Products.Add(new ProductDetails(8, "Coca-Cola", 27.39, 0, 0)); + } + return Products; + } + public int ProductID { get; set; } + public string ProductName { get; set; } + public double Price { get; set; } + public int Quantity { get; set; } + public double Total { get; set; } +} +{% endhighlight %} +{% endtabs %} -``` - -N> You can find the fully working sample [here](https://github.com/SyncfusionExamples/blazor-datagrid-calculated-columns-inside-dialog-editing). \ No newline at end of file +{% previewsample "https://blazorplayground.syncfusion.com/embed/LDLyXsZxfZTvqDJz?appbar=false&editor=false&result=true&errorlist=false&theme=bootstrap5" %} \ No newline at end of file From cd15731f597a45a34b41a6d811be9d2a1e47bd6c Mon Sep 17 00:00:00 2001 From: Vinitha Balasubramanian Date: Wed, 8 Jan 2025 17:08:34 +0530 Subject: [PATCH 2/3] 930084: Revamp dialog edit topics --- .../images/blazor-datagrid-dialog-editing.png | Bin 62697 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 blazor/datagrid/images/blazor-datagrid-dialog-editing.png diff --git a/blazor/datagrid/images/blazor-datagrid-dialog-editing.png b/blazor/datagrid/images/blazor-datagrid-dialog-editing.png deleted file mode 100644 index 3a65a55092b2454b4dd0670133bb967ec10265a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62697 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 HzxclZ9F{1t From fb2621fa47064ef8f95870ad780ca37b1b6d7519 Mon Sep 17 00:00:00 2001 From: Vinitha Balasubramanian Date: Wed, 8 Jan 2025 17:15:51 +0530 Subject: [PATCH 3/3] 930084: Revamp dialog edit topics --- blazor/datagrid/dialog-editing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blazor/datagrid/dialog-editing.md b/blazor/datagrid/dialog-editing.md index 2c1c6fe90b..05c6cc088e 100644 --- a/blazor/datagrid/dialog-editing.md +++ b/blazor/datagrid/dialog-editing.md @@ -19,7 +19,7 @@ Here's an example how to enable dialog editing in the blazor grid component: {% highlight razor tabtitle="Index.razor" %} @using Syncfusion.Blazor.Grids - +