我在.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;
}
}
现在,当您单击子组件中的按钮时,父组件中的变量值将得到更新。