.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и это создало бесконечный цикл.

Я не уверен, что делать здесь.

0 ответов

Другие вопросы по тегам