I have a Blazor Server Application, There is this currency dropdown on the Radzen data grid. I want to change the Unit Cost currency based on selection. The problem is, If I change one of the row's currencies, all of the row's currencies are set to the selected ones'. How can I fix this?
Blazor related portion
...
<RadzenDataGridColumn TItem="OrderDetail" Property="UnitCost" Title="Unit Cost">
<EditTemplate Context="orderDetail">
@*<RadzenNumeric TValue="double" Min="1" @bind-Value="orderDetail.UnitCost" Style="width: 100%; display: block" Name="UnitCost"/>
<RadzenRequiredValidator Text="Unit Cost is required" Component="UnitCost" Popup="true" Style="position: absolute"/>*@
@switch (SelectedCurrency)
{
case "Dolar":
@string.Format(new CultureInfo("en-US"), "{0:C}", orderDetail.BuyQuantity * orderDetail.CostRatio)
break;
case "Euro":
@string.Format(new CultureInfo("en-FR"), "{0:C}", orderDetail.BuyQuantity * orderDetail.CostRatio)
break;
default:
@string.Format(new CultureInfo("tr-TR"), "{0:C}", orderDetail.BuyQuantity * orderDetail.CostRatio)
break;
}
</EditTemplate>
<Template Context="detail">
@switch (SelectedCurrency)
{
case "Dolar":
@string.Format(new CultureInfo("en-US"), "{0:C}", detail.BuyQuantity * detail.CostRatio)
break;
case "Euro":
@string.Format(new CultureInfo("en-FR"), "{0:C}", detail.BuyQuantity * detail.CostRatio)
break;
default:
@string.Format(new CultureInfo("tr-TR"), "{0:C}", detail.BuyQuantity * detail.CostRatio)
break;
}
</Template>
@*<FooterTemplate>
<b>@string.Format(new CultureInfo("en-US"), "{0:C}", SelectedOrders?.FirstOrDefault()?.OrderDetails.Sum(o=>o.BuyQuantity * o.CostRatio))</b>
</FooterTemplate>*@
</RadzenDataGridColumn>
@code {
[Parameter]
public string SelectedCurrency { get; set; }
readonly List<string> currency = new() { "TL", "Dolar", "Euro"};
IList<Order?> SelectedOrders { get; set; }
IEnumerable<Order?> _orders = new List<Order?>();
IEnumerable<Vendor?> _vendors;
RadzenDataGrid<Order?> _grid;
RadzenDataGrid<OrderDetail> _gridDetail;
protected override async Task OnInitializedAsync()
{
_orders = await ViewAllOrdersUseCase.ExecuteAsync();
SelectedOrders = new List<Order?> { _orders.FirstOrDefault() };
_vendors = await ViewAllVendorsUseCase.ExecuteAsync();
}
private void OnChange(object args)
{
SelectedCurrency = args.ToString();
}