我有一个Blazor Server应用程序,我有一张Blazor页面,在选项卡标题中有一些选项卡,我显示网格中的行数,例如Tab1Name(RowCount(、Tab2Name(RowCount(、Tab3Name(RowCount
我已经创建了一个显示数据的网格组件。此数据作为[参数]从我的页面中传递下来。在该网格中,用户可以编辑数据,例如添加/编辑/删除记录。这可能会更改选项卡标题中显示的计数。所以我想刷新这个计数。
知道如何刷新选项卡标题中的RowCount吗?
我能介绍一下如何强制子控件刷新父页,而不重新加载整个页面吗?
TIA-
您可以在chicd组件上创建一个EventCallback,并让父组件订阅它,类似于
子组件
[Parameter]
public EventCallback<int> OnRecordAddDelete {get; set;}
private AddRecord(){
if (OnRecordAddDelete.HasDelegate) OnRecordAddDelete.InvokeInvokeAsync(no of rows in grid);
}
private DeleteRecord(){
if (OnRecordAddDelete.HasDelegate) OnRecordAddDelete.InvokeAsync(no of rows in grid);
}
在父组件中,您可以订阅行更改事件
<childcomponent OnRecordAddDelete=@(e=> here you get rows count in grid) />
虽然Surinder的回答没有错,但对于组件到组件通知的整个问题,有一种不同的方法。
它被称为Blazor通知模式。您的数据生活在一个视图服务中,该服务具有一个或多个事件来表示其数据集已更改。任何需要了解更改的组件都会注入服务并订阅事件。组件事件处理程序通常只调用StateHasChanged。
这里有一个Stackflow答案,它演示了使用WeatherForecast列表的Notification模式。当API调用完成时,如何从主.RAZOR页面中的所有子组件触发/刷新我的主.RAZOR页面?