Quantcast
Channel: Active questions tagged blazor - Stack Overflow
Viewing all articles
Browse latest Browse all 4839

I have 2 list pages and scroll position is remembered when switching between the 2 pages

$
0
0

I have 2 list pages (tasks and contacts). I'm using the NavMenu.razor that comes with the Blazor Web App for the links.

<div class="nav-item px-3"><NavLink class="nav-link" href="weather"><span class="bi bi-list-nested-nav-menu" aria-hidden="true"></span> Weather</NavLink></div><div class="nav-item px-3"><NavLink class="nav-link" href="contact-list"><span class="bi bi-list-nested-nav-menu" aria-hidden="true"></span> Contacts</NavLink></div><div class="nav-item px-3"><NavLink class="nav-link" href="task-list"><span class="bi bi-list-nested-nav-menu" aria-hidden="true"></span> Tasks</NavLink></div></nav></div>

For instance, if I click on Contacts and scroll down the page of 50 records, then I click Tasks, the page is already scrolled to the bottom of the 50 tasks. I was expecting when I clicked on Tasks it would start at the top of the page.

Now, if I select a contact and got to detail page and then return to contact list after a modification or cancel the list page starts at the top. In this case, I would like it to go back to the record in the list.

Here's my contacts component:

@page "/contact-list"@rendermode InteractiveServer@inject ContactService ContactService@inject NavigationManager NavigationManager<h3>Contact List</h3><table class="table table-striped"><thead><tr><th>First Name</th><th>Last Name</th><th>Email</th><th>Actions</th></tr></thead><tbody>        @foreach (var contact in Contacts)        {<tr><td>@contact.FirstName</td><td>@contact.LastName</td><td>@contact.Email1</td><td><button class="btn btn-primary btn-sm" @onclick="() => EditContact(contact.Id)">Edit</button><button class="btn btn-danger btn-sm" @onclick="() => DeleteContact(contact.Id)">Delete</button></td></tr>        }</tbody></table><button class="btn btn-success" @onclick="CreateContact">Add New Contact</button>@if (SelectedContact != null){<h3>@(IsEditing ? "Edit Contact" : "Create Contact")</h3><div class="form-group"><label>First Name</label><input type="text" class="form-control" @bind="SelectedContact.FirstName" /></div><div class="form-group"><label>Last Name</label><input type="text" class="form-control" @bind="SelectedContact.LastName" /></div><div class="form-group"><label>Email</label><input type="email" class="form-control" @bind="SelectedContact.Email1" /></div><button class="btn btn-primary" @onclick="SaveContact">Save</button><button class="btn btn-secondary" @onclick="CancelEdit">Cancel</button>}@code {    private List<Contact> Contacts;    private Contact? SelectedContact;    private bool IsEditing = false;    protected override void OnInitialized()    {        Contacts = ContactService.GetAllContacts();    }    private void CreateContact()    {        SelectedContact = new Contact();        IsEditing = false;    }    private void EditContact(Guid id)    {        SelectedContact = Contacts.FirstOrDefault(c => c.Id == id);        NavigationManager.NavigateTo($"/contact-detail/{id}");        IsEditing = true;    }    private void DeleteContact(Guid id)    {        ContactService.DeleteContact(id);        Contacts = ContactService.GetAllContacts();    }    private void SaveContact()    {        if (IsEditing)        {            ContactService.UpdateContact(SelectedContact);        }        else        {            ContactService.AddContact(SelectedContact);        }        Contacts = ContactService.GetAllContacts();        SelectedContact = null;    }    private void CancelEdit()    {        SelectedContact = null;    }}

Here's my tasks component:

@page "/task-list"@rendermode InteractiveServer@inject ArcTaskService TaskService@inject NavigationManager NavigationManager<h3>Task List</h3><table class="table table-striped"><thead><tr><th>Task Name</th><th>Priority</th><th>Completed</th><th>Actions</th></tr></thead><tbody>        @foreach (var task in Tasks)        {<tr><td>@task.TaskName</td><td>@(task.TaskPriority.HasValue ? task.TaskPriority.ToString() : "N/A")</td><td>@(task.TaskCompleted ? "Yes" : "No")</td><td><button class="btn btn-primary btn-sm" @onclick="() => EditTask(task.Id)">Edit</button><button class="btn btn-danger btn-sm" @onclick="() => DeleteTask(task.Id)">Delete</button></td></tr>        }</tbody></table><button class="btn btn-success" @onclick="CreateTask">Add New Task</button>@code {    private List<ArcTask> Tasks;    protected override void OnInitialized()    {        Tasks = TaskService.GetAllTasks();    }    private void CreateTask()    {        NavigationManager.NavigateTo("/task-detail");    }    private void EditTask(Guid id)    {        NavigationManager.NavigateTo($"/task-detail/{id}");    }    private void DeleteTask(Guid id)    {        TaskService.DeleteTask(id);        Tasks = TaskService.GetAllTasks();    }}

enter image description here

enter image description here


Viewing all articles
Browse latest Browse all 4839

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>