如何在 mudblazor 中获取数据网格值的总和

问题描述 投票:0回答:1

如何使用 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>

c# .net datagrid blazor mudblazor
1个回答
0
投票

与其将总计算和截断总计算放在

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 => ...;
}
© www.soinside.com 2019 - 2024. All rights reserved.