I have a page used to create categoryProducts, i made an EditForm useful to create the categories, in the same page i show them all in a html table tag, for every row i have an edit button, i need to make another form that allow me to modify the row when i click the modify button, can you help me?
This is the code:
@page "/categorie"@using MyOnlineShop.Components.Controls@using MyOnlineShop.Controllers@using MyOnlineShop.Models@inject IProductCategoriesController CategoriesController@inject NavigationManager NavigationManager<h2 class="text-center">Categorie</h2><div class="container"><div class="row"><div class="col-3"> @if (@createFields) {<button type="button" class="btn btn-secondary my-3" @onclick="ShowCreateFields">Nascondi</button> } else {<button type="button" class="btn btn-success my-3" @onclick="ShowCreateFields">Crea</button> }</div> </div></div>@if (@createFields){<div class="container"><h3>Aggiungi categoria</h3><div class="row my-3"><EditForm Model="createProductCategory" OnValidSubmit="@CreateProductCategory" FormName="CreateProductCategoriesForm"><DataAnnotationsValidator /><ValidationSummary /><div class="col-2"><label class="col-form-label">Categoria:</label></div><div class="col-2"><InputText @bind-Value="createProductCategory.ProductCategoryName" class="form-control" /><ValidationMessage For="() => createProductCategory.ProductCategoryName" /></div><div class="col-2"><label class="col-form-label">Descrizione categoria:</label></div><div class="col-2"><InputText @bind-Value="createProductCategory.ProductCategoryDescription" class="form-control" /><ValidationMessage For="() => createProductCategory.ProductCategoryDescription" /></div><div class="col-2"><label class="col-form-label">Note:</label></div><div class="col-2"><InputText @bind-Value="createProductCategory.ProductCategoryNote" class="form-control" /><ValidationMessage For="() => createProductCategory.ProductCategoryNote" /></div><button class="btn btn-primary my-3" type="submit">Salva</button></EditForm></div></div>}@if (filteredProductCategoriesList != null){<div class="container"><SearchComponent SearchCallback="HandleSearch"></SearchComponent><p class="text-danger small">@searchMessage</p><table class="table"><thead class="thead-light"><tr><th scope="col">Nome categoria</th><th scope="col">Descrizione</th><th scope="col">Note</th><th scope="col"></th></tr></thead><tbody> @foreach (var productCategory in filteredProductCategoriesList) { @if (editingId == productCategory.ProductCategoryId) { <tr> <EditForm Model="modifyProductCategory" OnValidSubmit="SaveEdit" FormName="ModifyProductCategoriesForm"><DataAnnotationsValidator /><ValidationSummary /><td> @* <p>@modifyProductCategory.ProductCategoryName</p> *@<InputText @bind-Value="@productCategory.ProductCategoryName" class="form-control" /><ValidationMessage For="() => productCategory.ProductCategoryName" /></td><td> @* <p>@modifyProductCategory.ProductCategoryDescription</p> *@<InputText @bind-Value="@productCategory.ProductCategoryDescription" class="form-control" /><ValidationMessage For="() => productCategory.ProductCategoryDescription" /></td><td> @* <p>@modifyProductCategory.ProductCategoryNote</p> *@<InputText @bind-Value="@productCategory.ProductCategoryNote" class="form-control" /><ValidationMessage For="() => productCategory.ProductCategoryNote" /></td><td><button type="submit" class="btn btn-primary" @onclick="SaveEdit">Salva</button><button type="button" class="btn btn-danger" @onclick="CancelEdit">Annulla</button></td></EditForm></tr> } else {<tr><td scope="row" class="align-content-center">@productCategory.ProductCategoryName</td><td class="align-content-center">@productCategory.ProductCategoryDescription</td><td class="align-content-center">@productCategory.ProductCategoryNote</td><td><button class="btn btn-info" @onclick="() => StartEdit(productCategory)">Modifica</button><button class="btn btn-danger" @onclick="() => DeleteProductCategory(productCategory.ProductCategoryId)">Elimina</button></td></tr> } } </tbody></table></div>}@code { public bool createFields = false; public bool modifyField = false; private string searchMessage = ""; private int? editingId = null; [SupplyParameterFromForm(FormName = "CreateProductCategoriesForm")] public ProductCategory? createProductCategory { get; set; } = new ProductCategory(); [SupplyParameterFromForm(FormName = "ModifyProductCategoriesForm")] private ProductCategory? modifyProductCategory { get; set; } private List<ProductCategory>? productCategoriesList; private List<ProductCategory>? filteredProductCategoriesList; public void ShowCreateFields() { if (createFields) { Console.WriteLine("Not Showing"); createFields = false; } else { Console.WriteLine("Showing"); createFields = true; } } protected override void OnParametersSet() { productCategoriesList = CategoriesController.GetProductCategories(); filteredProductCategoriesList = productCategoriesList; } private void CreateProductCategory() { Console.WriteLine("Submitted categoria articoli"); if (createProductCategory != null) { CategoriesController.CreateProductCategory(createProductCategory); NavigationManager.Refresh(forceReload: true); } } private void DeleteProductCategory(int productCategoryId) { CategoriesController.DeleteProductCategory(productCategoryId); NavigationManager.Refresh(forceReload: true); } private void StartEdit(ProductCategory productCategory) { editingId = productCategory.ProductCategoryId; modifyProductCategory = new ProductCategory { ProductCategoryName = productCategory.ProductCategoryName, ProductCategoryDescription = productCategory.ProductCategoryDescription, ProductCategoryNote = productCategory.ProductCategoryNote }; } private void SaveEdit() { if (modifyProductCategory != null) CategoriesController.ModifyProductCategory(modifyProductCategory.ProductCategoryId, modifyProductCategory); CancelEdit(); } private void CancelEdit() { editingId = null; modifyProductCategory = new ProductCategory(); } private void HandleSearch(string searchFilterString) { filteredProductCategoriesList = productCategoriesList; if (filteredProductCategoriesList != null) { filteredProductCategoriesList = productCategoriesList.Where(x => x.ProductCategoryDescription.ToLower().Trim().Contains(searchFilterString.ToLower().Trim())).ToList(); searchMessage = ""; if (filteredProductCategoriesList.Count() <= 0 && searchFilterString != string.Empty) { searchMessage = "Non sono state trovate categorie"; filteredProductCategoriesList = productCategoriesList; } if (searchFilterString == string.Empty) { filteredProductCategoriesList = productCategoriesList; } } }}I've tried many solution but nothing fits