.Net 7 Quick Grid Filter не обновляется должным образом
У меня есть сетка со столбцами шаблонов и свойств (код ниже показывает только один столбец). Похоже, сетка работает, как и ожидалось, с сортировкой и фильтрацией. Тем не менее, я хочу, чтобы очистить все фильтры. Я знаю, как бы я это сделал, и он просто очищает каждую из переменных, привязанных к каждому из отфильтрованных столбцов (например,filterProjectName
ниже.) Итак, мне нужно, чтобы пользовательский интерфейс отображал кнопку, когда есть хотя бы 1 фильтр. У меня есть код в свойстве Filtered data, который определяет, есть ли у нас какие-либо фильтры, а затем суммирует их. Это всегда кажется на шаг позади того, что есть на самом деле (т.@CurrentFilters.Count
ниже.) Несмотря наConsole.WriteLine
который показывает правильное число, когда свойство возвращается.
Вот мой HTML:
<label class="ms-3">Filters: @CurrentFilters.Count</label>
<div class="fs-08">
<QuickGrid @ref="MyWorkGrid" Items="FilteredQuickProjects" ItemKey="@(p => p.ProjectId)" Pagination="QuickPagination" Class="table table-fixed table-sm table-bordered table-striped table-hover">
<TemplateColumn Title="Project Name" Class="project-name text-truncate" Sortable="true" SortBy="sortProjectName">
<ColumnOptions>
<div class="search-box">
<input type="search" class="form-control form-control-xs" autofocus @bind="filterProjectName" @bind:event="oninput" placeholder="Project Name..." />
</div>
</ColumnOptions>
<ChildContent>
<div class="d-flex justify-content-between align-items-start">
...
</div>
</ChildContent>
</TemplateColumn>
</QuickGrid>
<Paginator Value="QuickPagination" />
</div>
Код позади:
public HashSet<string> CurrentFilters { get; set; } = new();
public QuickGrid<MyWorkViewModel> MyWorkGrid { get; set; }
public IQueryable<MyWorkViewModel> FilteredQuickProjects
{
get
{
if (!PageIsLoaded)
return MyQuickProjects;
CurrentFilters.Clear();
if (!string.IsNullOrWhiteSpace(filterProjectName))
{
result = result.Where(x => x.Name.Contains(filterProjectName, StringComparison.InvariantCultureIgnoreCase));
CurrentFilters.Add("ProjectName");
}
System.Console.WriteLine($"Total Filters: {CurrentFilters.Count}");
return result;
}
}
я кладуStateHasChanged()
в концеFilteredQuickProjects
и это создало бесконечный цикл.
Я не уверен, что делать здесь.