使用blazor进行事件回调



我正在学习使用blazor的EventCallBack,但我想了解

  1. 我的return方法有没有办法在父方返回第二个参数。我想知道它来自哪个rowID

父代码

@foreach (var rw in pg.rows)
{
@if (rw.rowDef == 1)
{
@if (rw.widgetsSection1.Count == 0)
{
<AddWidgetToColumnComponent rowID="rw.rowID" onAddingWidget="AddWidgetToRow"></AddWidgetToColumnComponent>
}
}
}
}
@code{
...
private void AddWidgetToRow(GenericWidgets evnt)
{
//bool confirmed = await JsRuntime.InvokeAsync<bool>("confirm", "Are you sure?");
var row = pg.rows.Where(x => x.rowID == 3).FirstOrDefault();
//row.addWidgetSection1(widgets);
}
}

子组件AddWidgetToColumnComponent

<button class="btn btn-info" @onclick="@addComponent">Ajouter</button>
@code {
[Parameter]
public int rowID { get; set; }
[Parameter]
public EventCallback<GenericWidgets> onAddingWidget { get; set; }
public async void addComponent()
{
GenericWidgets widget = new GenericWidgets();
await onAddingWidget.InvokeAsync(widget);
}

如果可能的话,我不知道如何完成(调试器给我错误(。唯一的其他方法是更改我的泛型类,在其中添加rowID属性。但是还有其他方法吗?

更改线路(我希望它是什么(

<AddWidgetToColumnComponent rowID="rw.rowID" onAddingWidget="AddWidgetToRow(rw.rowID)"></AddWidgetToColumnComponent>

和这条线路

private void AddWidgetToRow(GenericWidgets evnt, int rowID)

如果问题是如何让EventCallback在具有多个参数的父级上激发,我通常通过创建一个类来封装需要传递的所有内容来实现这一点。

所以你可能会得到这样的东西:

[Parameter] public EventCallback<AddWidgetArgs> onAddingWidget { get; set; }

AddWidgetArgs是一个类,比如:

public class AddWidgetArgs 
{
public GenericWidgets GenericWidget { get; set; } // My guess at your 1st parameter 
public int RowId { get; set; } // Additional parameter
}

然后你在父母身上消费,如下所示:

private void AddWidgetToRow(AddWidgetArgs args)  { ... } // Or async Task, etc.

相关内容

  • 没有找到相关文章

最新更新