diff --git a/ComponentPractice/ComponentPractice/Components/Layout/NavMenu.razor b/ComponentPractice/ComponentPractice/Components/Layout/NavMenu.razor
index 5ba6723..369368a 100644
--- a/ComponentPractice/ComponentPractice/Components/Layout/NavMenu.razor
+++ b/ComponentPractice/ComponentPractice/Components/Layout/NavMenu.razor
@@ -67,6 +67,12 @@
DataGrid REST
+
+
+
+ DataGrid Edit
+
+
diff --git a/ComponentPractice/ComponentPractice/Components/Pages/DataGridEdit.razor b/ComponentPractice/ComponentPractice/Components/Pages/DataGridEdit.razor
new file mode 100644
index 0000000..355e28a
--- /dev/null
+++ b/ComponentPractice/ComponentPractice/Components/Pages/DataGridEdit.razor
@@ -0,0 +1,185 @@
+@page "/datagridedit"
+@using System.Linq.Dynamic.Core
+
+@inject InMemoryData data;
+
+@rendermode RenderMode.InteractiveServer
+
+
+
+
+ DataGrid InLine Editing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ RadzenDataGrid grid;
+ List employees;
+ bool isLoading = false;
+
+ List titles = new List { "Junior", "Mid", "Senior", "Lead", "Chief" };
+ IEnumerable selectedTitles;
+
+ List employeesToInsert = new List();
+ List employeesToUpdate = new List();
+
+ protected async override Task OnInitializedAsync()
+ {
+ isLoading = true;
+
+ await Task.Yield();
+
+ employees = await data.GetEmployeeDataAsync(5);
+
+ isLoading = false;
+ }
+
+ async Task OnSelectedTitlesChange(object value)
+ {
+ if (selectedTitles != null && !selectedTitles.Any())
+ selectedTitles = null;
+
+ await grid.FirstPage();
+ }
+
+ async Task Reset()
+ {
+ grid.Reset(true);
+ await grid.FirstPage(true);
+
+ employeesToInsert.Clear();
+ employeesToUpdate.Clear();
+ }
+
+ async Task Reset(Employee employee)
+ {
+ employeesToInsert.Remove(employee);
+ employeesToUpdate.Remove(employee);
+ }
+
+ async Task InsertRow()
+ {
+ var employee = new Employee();
+ employeesToInsert.Add(employee);
+ await grid.InsertRow(employee);
+ }
+
+ async Task EditRow(Employee employee)
+ {
+ if (employeesToInsert.Count > 0)
+ Reset();
+
+ employeesToUpdate.Add(employee);
+ await grid.EditRow(employee);
+ }
+
+ async Task CancelEdit(Employee employee)
+ {
+ Reset(employee);
+
+ grid.CancelEditRow(employee);
+ }
+
+ async Task DeleteRow(Employee employee)
+ {
+ Reset(employee);
+
+ if (employees.Contains(employee))
+ employees.Remove(employee);
+ else
+ grid.CancelEditRow(employee);
+
+
+ await grid.Reload();
+ }
+
+ async Task SaveRow(Employee employee)
+ {
+ await grid.UpdateRow(employee);
+ }
+
+ void OnCreateRow(Employee employee)
+ {
+ employees.Add(employee);
+
+ employeesToInsert.Remove(employee);
+ }
+
+ void OnUpdateRow(Employee employee)
+ {
+ Reset(employee);
+
+ var found = employees.Where(e => e.ID == employee.ID).FirstOrDefault();
+ if (found is null)
+ return;
+
+ found = employee;
+ }
+}
+