【发布时间】:2021-09-29 20:42:08
【问题描述】:
我的 blazor 应用程序中有这个显示公司列表的 html 表。现在,当我想删除特定行时,我单击删除图标。我注意到删除函数正在从数据库中删除行值,而不是从视图中删除。请检查我的代码,如果我错过了什么,请告诉我。
代码:
<table>
<thead>
<tr>
<th>ID</th>
<th>Company Name</th>
<th>Delete</th>
</tr>
</thead>
<tbody>
@foreach (var Result in lstCompanies)
{
<tr>
<td>@Result.id</td>
<td>@Result.companyName</td>
<td>
<button @onclick="() => RemoveCompanyFromList(Result)">
<i class="fa fa-trash-o fa-lg"></i>
</button>
</td>
</tr>
}
</tbody>
</table>
onclick 删除功能代码:
[Parameter]
public EventCallback<List<Models.UTP>> ItemUpdated { get; set; }
private void RemoveCompanyFromList(Models.UTP utpResult)
{
string utpidResult = utpResult.utpid;
try
{
Http.PutAsJsonAsync($"api/Users/company/remove/{utpidResult}", utpidResult);
ItemUpdated.InvokeAsync(lstCompanies);
StateHasChanged();
}
catch (Exception ex)
{
string exMsg = ex.Message;
}
}
【问题讨论】:
-
确保您也从 lstCompanies 中删除该项目。如果您从代码 sn-p 执行此操作并不明显
-
也许我应该从 lstCompanies 中删除并重新启动表格显示吧?
-
您不需要重新初始化表。当您调用 StateHasChanged() 时,它将自动刷新。只需确保从 lstCompanies 中删除该项目
-
添加了这个 lstCompanies.Remove(utpResult);在状态改变之前..但不起作用
-
我认为这是嵌入在页面中的组件。您是否在捕获 ItemUpdated.InvokeAsync( )?如果是,那么也可以将 StateHasChanged() 放入该事件处理程序中
标签: c# html blazor blazor-webassembly