在选定 HTML 的 OnChange 之后重新加载 Blazor 组件

Recharger un composant Blazor après un OnChange d’un HTML sélectionné

在 html select 列表的 onchange 中找到的“更新”方法后,我无法重新加载“ContenuCongelateur”合成器,有解决方案吗?

感谢 Blazor 的新手 ^^

Index.razor

<select class="form-control" style="width: 100%" @onchange="Update">
    @if (indexModel?.Congelateurs != null)
    {
        @foreach (var cong in indexModel.Congelateurs)
        {
            <option value="@cong.Num_Congelateur">@cong.Nom_Congelateur</option>
        }
    }
</select>

<hr />

<ContenuCongelateur CongelateurSelected="indexModel.CongelateurSelected"></ContenuCongelateur>

@code {
    CongelateurService congelateurService = new CongelateurService(DBContextConstant.ConnectionString);

    IndexViewModel indexModel;

    protected override void OnInitialized()
    {
        indexModel = new IndexViewModel();
        indexModel.Congelateurs = congelateurService.GetListeCongelateurs();
    }

    private void Update(ChangeEventArgs args)
    {
        indexModel.CongelateurSelected = int.Parse(args.Value.ToString());
    }
}


ContenuCongelateur.razor

<div>
    <div class="card card-body">
        @if (Contenu_Congelateur != null)
        {
            <table class="cell">
                @foreach (var ligne in Contenu_Congelateur)
                {
                    <tr class="cell">
                        @foreach (var cell in ligne.Cells)
                        {
                            <td class="@cell.Class_Color" id="@cell.Num_Boite" @onclick="(() => ChargerBoite(cell.Num_Boite))">
                                @cell.Num_Boite + ":" @cell.Quantite_Restante
                            </td>
                        }
                    </tr>
                }
            </table>
        }
    </div>
</div>

@code {

    [Parameter]
    public int CongelateurSelected { get; set; }

    CongelateurService congelateurService = new CongelateurService(DBContextConstant.ConnectionString);

    public List<LigneCongelateurDto> Contenu_Congelateur { get; set; }

    protected override void OnInitialized()
    {
        Contenu_Congelateur = congelateurService.GetListeDetailleeDispoCongel(CongelateurSelected);
    }
}

更新组件时,必须从服务中获取数据。

尝试使用 StateHasChanged() 通知 Blazor 页面上的某些信息已更改,需要重新绘制。如果您需要从 async 方法更新它,您可以使用 await InvokeAsync(()=>StateHasChanged()) 代替。

private void Update(ChangeEventArgs args)
{
    indexModel.CongelateurSelected = int.Parse(args.Value.ToString());
    StateHasChanged();
}