在选定 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();
}
在 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();
}