Blazor值从动态渲染的子对象传递给父对象



我在.NET core 3.1 blazor应用程序上使用Radzen数据网格。在网格页面上,我有RadzenDataGridColumn组件,在其中我有动态呈现的FilterTemplate组件。我的问题是,我想将FilterValue绑定到FilterTemplate组件,并且对FilterValue所做的更改应该传递回父级。

<RadzenDataGridColumn Property="@colDef.Property" FilterValue="@colDef.FilterValue" >                                              
<FilterTemplate>
<CascadingValue Value="@colDef.FilterValue">
@colDef.FilterTemplate  //this contains a RenderFragment 
</CascadingValue>   
</FilterTemplate>                
</RadzenDataGridColumn>  

colDef.FilterTemplate可以包含如下代码段。

<RadzenDropDown TValue="string" @bind-Value="FilterValue" Data="@DrpData" TextProperty="@DrpTextProperty" ValueProperty="@DrpValueProperty" ></RadzenDropDown>  
@code {
[CascadingParameter]
public string FilterValue { get; set; }
[Parameter]
public string DrpTextProperty { get; set; }
[Parameter]
public string DrpValueProperty { get; set; }
[Parameter]
public IEnumerable<DrpDataType> DrpData { get; set; }
}

使用事件回调,如本例所示。我使用了默认的Blazor-wasm模板和现有的Counter组件来展示它的工作原理:

子组件内(计数器剃刀(

[Parameter]
public EventCallback<string> OnFilterValueChanged { get; set; }
private async Task IncrementCount()
{
currentCount++;
string newFilter = currentCount.ToString();
await OnFilterValueChanged.InvokeAsync(newFilter);
}

父级(Index.razor(:

<Counter OnFilterValueChanged="FilterValueHandler" />
<h2>@FilterValue</h2>
@code {
public string FilterValue { get; set; } = "Initial Value";
private void FilterValueHandler(string filtervalue)
{
FilterValue = filtervalue;
}
}

现在,当您单击子组件中的按钮时,父组件中的变量值将得到更新。

相关内容

  • 没有找到相关文章

最新更新