I have a main page Transact.razor Page. Inside my Transact Page, there is a button named Add New which will open a MudDialog (AddTransact.razor) where I can add a new transaction. If I were to close the MudDialog (Add Transact), i want to rerender the Transact Page so that the newly added transaction will reflect on the table in the Transact Page.
How do i do that?
I am using blazor server-side .Net 8. Since blazor is a single page application, I want to rerender the page because "refreshing" the page will defeat the purpose of SPA.
What I tried so far is:Transact.razor
private async Task AddNew(){ var options = new DialogOptions { ClassBackground = "my-custom-class", CloseOnEscapeKey = true, MaxWidth = MaxWidth.Medium, FullWidth = true, NoHeader = true }; var dialog = DialogService.Show<AddTransact>("Add New", options); var result = await dialog.Result; if (!result.Cancelled) { await vwTranService.GetAllVwTransactions(); StateHasChanged(); }}This is my AddTransact.razor (Dialog)
private async void Submit(){ if(selectedUser is not null) { isVisible = true; await Task.Delay(1000); Transaction!.UserID = selectedUser?.id; Transaction!.DOCUMENT_NUM = DocumentNumber; Transaction.CREATED_DATE = DateValue; Transaction.PARTICULARS = Particulars; Transaction.AMOUNT = Amount; if (Amount > selectedUser!.Balance) { Snackbar.Add("User does not have enough balance.", Severity.Error); return; } Balance!.UserID = selectedUser?.id; Balance.Balance -= Amount; await tranService.AddTransactionAsync(Transaction); await balanceService.UpdateBalance(Balance); Snackbar.Add("Transaction added successfully", Severity.Success); Transaction = new(); selectedUser = new(); users = new(); await vwUserService.GetAllUsers(); await GenerateDocumentNumberAsync(); Amount = 0; Particulars = string.Empty; Balance = new(); isVisible = false; StateHasChanged(); return;}Snackbar.Add("Please select a user", Severity.Warning);}
somehow, it does not work