如何在 blazor 中使用 syncfusion 获取带有自定义操作列的选定行?
How to get selected row with custom action column using syncfusion in blazor?
我在 blazor 中使用 syncfusion 网格。
这是我的剃刀:
<div class="card-outer p-0">
<div class="grid-table">
<EjsGrid DataSource="@ManufacturedCoupons" AllowPaging="true">
<GridPageSettings PageCount="5" PageSize="5"></GridPageSettings>
<GridColumns>
<GridColumn Field=@nameof(Coupon.MaterialIdType) HeaderText="@CommonResource.MaterialID" Width="130" TextAlign="TextAlign.Center"></GridColumn>
<GridColumn Field=@nameof(Coupon.MaterialId) HeaderText="@CommonResource.MaterialID" Width="130" TextAlign="TextAlign.Center"></GridColumn>
<GridColumn Field=@nameof(Coupon.LotNo) HeaderText="@CommonResource.LotNo" Width="100" TextAlign="TextAlign.Center"></GridColumn>
<GridColumn Field=@nameof(Coupon.ArrivalDate) HeaderText="@CommonResource.DeliveryDate" TextAlign="TextAlign.Center" Width="150"></GridColumn>
<GridColumn HeaderText="@CommonResource.Action" TextAlign="TextAlign.Center" Width="120">
<Template>
@{
<div class="actions">
<a href="javascript:void(0);" title="@CommonResource.SendToStock"><img src="images/export.svg" alt="@CommonResource.SendToStock" @onclick="SendToStockClicked()"></a>
</div>
}
</Template>
</GridColumn>
</GridColumns>
</EjsGrid>
</div>
</div>
这是我在代码隐藏文件中的方法:
protected void SendToStockClicked(Coupon coupon)
{
}
我想在单击操作按钮时在此方法中传递选定的行数据。
我怎样才能做到这一点?
我不熟悉 syncfusion...我只知道 blazor。我从 Blazor 了解到,如果你想调用一个方法并向它传递一个值,你应该使用 lambda 表达式。假设您的网格中有一个名为 MyCoupon 的 Coupon 类型的对象,并且您想将其传递给名为 SendToStockClicked 的本地方法...这就是您调用 SendToStockClicked 的方式:
@onclick="@(() => SendToStockClicked(MyCoupon))"
顺便说一下,这个 "javascript:void(0);"
是 JavaScript,你不应该在 Blazor 中使用 JavaScript...
希望这对您有所帮助...
编辑
你说对了一半。它确实对我有帮助,所以我将其标记为 true,但我仍然需要做一些修复,我将其放在这里。
<Template>
@{
var couponData = (context as Coupon);
<div class="actions">
<a href="javascript:void(0);"
title="@CommonResource.SendToStock"
@onclick="(()=> SendToStockClicked(couponData))">
<img src="images/export.svg"
alt="@CommonResource.SendToStock">
</a>
</div>
}
</Template>
这里我要拿couponData来发送我的自定义方法对象
我在 blazor 中使用 syncfusion 网格。
这是我的剃刀:
<div class="card-outer p-0">
<div class="grid-table">
<EjsGrid DataSource="@ManufacturedCoupons" AllowPaging="true">
<GridPageSettings PageCount="5" PageSize="5"></GridPageSettings>
<GridColumns>
<GridColumn Field=@nameof(Coupon.MaterialIdType) HeaderText="@CommonResource.MaterialID" Width="130" TextAlign="TextAlign.Center"></GridColumn>
<GridColumn Field=@nameof(Coupon.MaterialId) HeaderText="@CommonResource.MaterialID" Width="130" TextAlign="TextAlign.Center"></GridColumn>
<GridColumn Field=@nameof(Coupon.LotNo) HeaderText="@CommonResource.LotNo" Width="100" TextAlign="TextAlign.Center"></GridColumn>
<GridColumn Field=@nameof(Coupon.ArrivalDate) HeaderText="@CommonResource.DeliveryDate" TextAlign="TextAlign.Center" Width="150"></GridColumn>
<GridColumn HeaderText="@CommonResource.Action" TextAlign="TextAlign.Center" Width="120">
<Template>
@{
<div class="actions">
<a href="javascript:void(0);" title="@CommonResource.SendToStock"><img src="images/export.svg" alt="@CommonResource.SendToStock" @onclick="SendToStockClicked()"></a>
</div>
}
</Template>
</GridColumn>
</GridColumns>
</EjsGrid>
</div>
</div>
这是我在代码隐藏文件中的方法:
protected void SendToStockClicked(Coupon coupon)
{
}
我想在单击操作按钮时在此方法中传递选定的行数据。
我怎样才能做到这一点?
我不熟悉 syncfusion...我只知道 blazor。我从 Blazor 了解到,如果你想调用一个方法并向它传递一个值,你应该使用 lambda 表达式。假设您的网格中有一个名为 MyCoupon 的 Coupon 类型的对象,并且您想将其传递给名为 SendToStockClicked 的本地方法...这就是您调用 SendToStockClicked 的方式:
@onclick="@(() => SendToStockClicked(MyCoupon))"
顺便说一下,这个 "javascript:void(0);"
是 JavaScript,你不应该在 Blazor 中使用 JavaScript...
希望这对您有所帮助...
编辑
你说对了一半。它确实对我有帮助,所以我将其标记为 true,但我仍然需要做一些修复,我将其放在这里。
<Template>
@{
var couponData = (context as Coupon);
<div class="actions">
<a href="javascript:void(0);"
title="@CommonResource.SendToStock"
@onclick="(()=> SendToStockClicked(couponData))">
<img src="images/export.svg"
alt="@CommonResource.SendToStock">
</a>
</div>
}
</Template>
这里我要拿couponData来发送我的自定义方法对象