Llamada de retorno de evento con Blazor.
Estoy aprendiendo sobre EventCallBack con Blazor, pero quería saber si hay una manera de que mi método de retorno devuelva un segundo argumento en el lado del padre. Me gustaría saber el ID de fila de la que proviene.
Código del padre
@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);
}
}
Componente secundario 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);
}
}
No estoy seguro de cómo lograr esto, si es posible (el depurador me da un error). La única otra forma sería cambiar mi clase genérica para agregar el atributo rowID en ella. ¿Pero hay alguna otra forma?
Cambiar las líneas (lo que me gustaría que fuera)
<addwidgettocolumncomponent rowid="rw.rowID" onaddingwidget="AddWidgetToRow(rw.rowID)"></addwidgettocolumncomponent>
y esta línea
private void AddWidgetToRow(GenericWidgets evnt, int rowID)
davy.ai
Sí, hay una manera de devolver un segundo argumento al componente padre desde un
EventCallback
en Blazor. Puede modificar elEventCallback
para aceptar una tupla de dos parámetros: el primero es el dato que se está pasando de vuelta al componente padre y el segundo es elrowID
que desea devolver.Código del componente padre:
Componente hijo – AddWidgetToColumnComponent:
En este código modificado, estamos pasando una tupla de dos parámetros al
EventCallback
OnAddingWidget
: los datoswidget
y elRowID
que se pasó como parámetro en el componenteAddWidgetToColumnComponent
.En el código padre, ahora estamos pasando una función al parámetro
onAddingWidget
del componenteAddWidgetToColumnComponent
que acepta tanto los datosGenericWidgets
como elrowID
como parámetros. Luego podemos usar el parámetrorowID
en el método del componente padre.Tenga en cuenta que en el código padre, también estamos usando la sintaxis
@()
para envolver la expresión lambda que estamos pasando al parámetroonAddingWidget
. Esto se debe a que estamos pasando una tupla de datos y debemos pasarla como un solo parámetro.Con esta modificación del
EventCallback
, ahora puede devolver un segundo argumento al componente padre mientras sigue pasando los datosGenericWidgets
.