嗨,我试图创建一个搜索函数,通过blazor组件显示我的数据。
搜索功能运行良好,并返回我想要的结果。但它不会更新旧组件。因此,如果我的搜索返回1个结果,那么组件只更新标题,但我的模型中的其他数据将保留在第一张加载的卡中。如果搜索一个额外的字母以使项目不存在,则所有组件都将不对等。但当我再次删除最后一个时,该组件将再次显示,并带有正确的数据。
<input type="search" @bind-value="SearchValue" @bind-value:event="oninput">
<div class="row justify-content-center mb-5">
@foreach (var item in FoundItems)
{
<ItemCard ItemDTO=item />
}
</div>
@code
public string SearchValue { get; set; } = "";
private List<ItemDTO> Items { get; set; }
protected async override Task OnInitializedAsync()
{Items = await _http.GetFromJsonAsync<List<ItemDTO>>("api/item");}
{
List<ItemDTO> FoundItems => Items.Where(i =>
i.Description.ToLower().Contains(SearchValue.ToLower())).ToList();
}
我已经解决了。
在我的组件中,我添加了。
protected override void OnParametersSet()
{
StateHasChanged();
}