У меня есть список задач, который пользователи могут проверить из списка, который исчезает, потому что 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