【问题标题】:Blazor - change value in child component but get it to update the parent interface toBlazor - 更改子组件中的值,但让它更新父界面
【发布时间】:2022-01-30 00:50:43
【问题描述】:

我有一个 Blazor Server 应用程序,我有一个 Blazor 页面,该页面在选项卡标题中有一些选项卡我显示网格中的行数,例如 Tab1Name (RowCount)、Tab2Name (RowCount)、Tab3Name (RowCount)

我创建了一个显示数据的 Grid 组件。此数据作为 [参数] 从我的页面向下传递。在该网格中,用户可以编辑数据,例如添加/编辑/删除记录。这可能会更改出现在 Tab 标题中的计数。所以我想刷新这个计数。

知道如何刷新标签标题中的 RowCount 吗?

我能否强制子控件刷新父页面,而无需重新加载整个页面?

TIA

【问题讨论】:

    标签: blazor


    【解决方案1】:

    你可以在 chid 组件上创建一个 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) />
    

    【讨论】:

      【解决方案2】:

      虽然 Surinder 的回答没有任何问题,但对于组件到组件通知的整个问题,有一种不同的方法。

      这称为 Blazor 通知模式。您的数据存在于视图服务中,该服务具有多个事件之一,表明其数据集已更改。任何需要了解更改的组件都会注入服务并订阅事件。组件事件处理程序通常只调用 StateHasChanged。

      这是一个 Stackflow 答案,它演示了使用 Wea​​therForecast 列表的通知模式。 How can I trigger/refresh my main .RAZOR page from all of its sub-components within that main .RAZOR page when an API call is complete?

      【讨论】:

        猜你喜欢
        • 2022-01-13
        • 2021-07-04
        • 2019-07-28
        • 2020-12-13
        • 1970-01-01
        • 2020-09-29
        • 1970-01-01
        • 1970-01-01
        • 2019-08-27
        相关资源
        最近更新 更多