如何使用 mudblazor 获取 Datagrid 值的总和。总计将通过单价乘以数量以及如何给予折扣得到总计。然后必须将其截断到小数点后两位。 如何得到这些 truncatedtotal 的总和并需要打印在下面的泥纸上?
<MudDataGrid Items="@Elements" Hover="true" Striped="true" Dense="true">
<Columns>
<Column T="Menuitemlist" StickyLeft="true" Class="removeicon">
<CellTemplate>
<MudIconButton OnClick="@(() => RemoveItem(@context.Item))" Color="@Color.Default" Icon="@Icons.Material.Filled.Delete" />
</CellTemplate>
</Column>
<Column T="Menuitemlist" Field="ItemName" Title="Name" />
<Column T="Menuitemlist" Field="qty" Title="Qty" >
<CellTemplate>
<MudGrid Style="padding-left:unset;padding-right:unset">
<MudItem xs="3" Class="d-flex align-center justify-center ">
<MudIconButton Icon="@Icons.Material.Filled.AddCircle" Variant="Variant.Filled" Size="Size.Small" @onclick="(() => context.Item.qty = context.Item.qty + 0.5)" />
</MudItem>
<MudItem xs="6" Class="d-flex align-center justify-center pa-2">
<MudTextField @bind-Value="@context.Item.qty" Margin="Margin.Dense" Style="text-align:center" />
</MudItem>
<MudItem xs="3" Class="d-flex align-center justify-center">
<MudIconButton Icon="@Icons.Material.Filled.RemoveCircle" Variant="Variant.Filled" Size="Size.Small" @onclick="(() => context.Item.qty = context.Item.qty - 0.5)" />
</MudItem>
</MudGrid>
</CellTemplate>
</Column>
<Column T="Menuitemlist" Field="OptionalSalesPrice" Title="Price" CellStyle="text-align:right" >
<CellTemplate>
<MudText Typo="Typo.subtitle1">@context.Item.OptionalSalesPrice.ToString("F")</MudText>
</CellTemplate>
</Column>
<Column T="Menuitemlist" Title="%" CellStyle="text-align: right">
<CellTemplate>
<MudText @bind-Value="DiscountValue" Typo="Typo.body2" >@DiscountValue</MudText>
</CellTemplate>
</Column>
<Column T="Menuitemlist" Title="Total" CellStyle="text-align: right" >
<CellTemplate>
@{
var total = (context.Item.OptionalSalesPrice * context.Item.qty) * (1- (DiscountValue/100.00));
double truncatedtotal = Math.Round(total, 2);
double subtotal12 =
}
<MudText Typo="Typo.body2">
@truncatedtotal.ToString("F")
</MudText>
</CellTemplate>
</Column>
</Columns>
</MudDataGrid>
与其将总计算和截断总计算放在
CellTemplate
的 MudDataGrid
中,不如通过添加新属性将其放入模型类中。例子:
public class MenuItemList
{
public double OptionalSalesPrice { get; set; }
public double Qty { get; set; }
public int DiscountValue { get; set; }
private double Total => (OptionalSalesPrice * Qty) * (1 - (DiscountValue / 100.00));
public double TruncatedTotal => Math.Round(Total, 2);
}
然后你的
MudDataGrid
Column
变得简单多了:
<Column T="MenuItemList" Title="Total" CellStyle="text-align: right">
<CellTemplate>
<MudText Typo="Typo.body2">@context.Item.TruncatedTotal.ToString("F")</MudText>
</CellTemplate>
</Column>
您还可以使用
System.Linq
Enumerable.Sum 方法 轻松计算页面中截断的总和。
...
<MudPaper>
<p>Sub Total: @SubTotal</p>
<p>Discount: @Discount</p>
<p>Net Total: @NetTotal</p>
</MudPaper>
@code {
...
private double SubTotal => Elements.Sum(e => e.TruncatedTotal);
private double NetTotal => ...;
}