Флажок приложения Blazor Server проверка флажки в списке задач оставляет следующий элемент.C#

Место общения программистов C#
Anonymous
Флажок приложения Blazor Server проверка флажки в списке задач оставляет следующий элемент.

Сообщение Anonymous »

У меня есть список задач, который пользователи могут проверить из списка, который исчезает, потому что Show выполненные задачи не проверены. Однако, когда задача исчезает, следующий элемент задачи проверяется, SMH, который является нежелательным поведением. Вы видите что -нибудь в коде ниже? < /P>
@page "/task-list"
@inject IJSRuntime JS
@rendermode InteractiveServer

@using ClassLibrary1
@inject TaskRepository TaskRepo
@inject NavigationManager _navMgr

Task List
Active: @ActiveTaskCount
Completed: @CompletedTaskCount

Add Task


Show Completed Tasks

@if (tasks == null)
{

Loading...

}
else
{




Task




@foreach (var task in tasks)
{
if (showCompletedTasks || !task.TaskCompleted)
{




@task.TaskName












}
}


}

@code {
private IEnumerable tasks;
private DotNetObjectReference dotNetRef;
private bool showCompletedTasks = false;

protected override async Task OnInitializedAsync()
{
tasks = await TaskRepo.GetAllAsync("TaskCompleted DESC, TaskPriority ASC");
dotNetRef = DotNetObjectReference.Create(this);
UpdateTaskCounts();
}

protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
await Task.Delay(100);
await JS.InvokeVoidAsync("initializeSortable", dotNetRef);
}
}

[JSInvokable]
public async Task UpdateTaskPriorities(string[] reorderedIds)
{
for (int i = 0; i < reorderedIds.Length; i++)
{
var taskId = Guid.Parse(reorderedIds);
var task = tasks.First(t => t.Id == taskId);
task.TaskPriority = i + 1; // Assign new priority based on position
await TaskRepo.UpdateAsync(task);
}
tasks = await TaskRepo.GetAllAsync("TaskCompleted DESC, TaskPriority ASC");
UpdateTaskCounts();
await InvokeAsync(StateHasChanged);
}

private void AddTask()
{
_navMgr.NavigateTo($"/task-detail/{Guid.Empty}");
}

private void EditTask(Guid id)
{
_navMgr.NavigateTo($"/task-detail/{id}");
}

private async Task DeleteTask(Guid id)
{
bool confirmed = await JS.InvokeAsync("confirm", "Are you sure you want to delete this item?");
if (confirmed)
{
await TaskRepo.DeleteAsync(id);
tasks = await TaskRepo.GetAllAsync("TaskCompleted DESC, TaskPriority ASC");
UpdateTaskCounts();
}
}

private async Task ToggleTaskCompletion(ArcTask task, bool isCompleted)
{
task.TaskCompleted = isCompleted;
await TaskRepo.UpdateAsync(task);
tasks = await TaskRepo.GetAllAsync("TaskCompleted DESC, TaskPriority ASC");
}

private int ActiveTaskCount => tasks?.Count(t => !t.TaskCompleted) ?? 0;
private int CompletedTaskCount => tasks?.Count(t => t.TaskCompleted) ?? 0;
private int TotalTaskCount => tasks?.Count() ?? 0;

private void UpdateTaskCounts()
{
InvokeAsync(StateHasChanged);
}
}


Подробнее здесь: https://stackoverflow.com/questions/794 ... em-checked

Вернуться в «C#»