c# - 总计 Gridview 上的列并显示在页脚中

标签 c# asp.net gridview

我是 ASP.NET 新手,在尝试添加购物车中的商品总值(value)时遇到困难。我的代码不起作用,但我觉得我走在正确的轨道上。有人可以帮助我吗?

购物车.aspx

<asp:TemplateField HeaderText="Item Total">
     <ItemTemplate>
        <asp:Label ID="lblItemTotal" runat="server" DataFormatString="{0:c2}"></asp:Label>
     </ItemTemplate>
     <FooterTemplate>
        <asp:Label ID="lblTotal" runat="server" Text="Order Total: "></asp:Label>
    </FooterTemplate>

ShoppingCart.aspx.cs

foreach (GridViewRow row in gvProductsList.Rows)
{
   Label lblItemTotal = (Label)row.FindControl("lblItemTotal");//find itemTotal label
   decimal decPrice = decimal.Parse(lblItemTotal.Text, NumberStyles.Currency);//convert to decimal
   decimal newtotal =+ decPrice;
   Label lblTotal = (row.FindControl("lblTotal")) as Label;
   lblTotal.Text = "$" + Convert.ToString(newtotal);
 }

我得到了该行的空异常 lblTotal.Text = "$"+ Convert.ToString(newtotal);

最佳答案

我自己是个新手,但我认为在 foreach 循环中,您需要在指向页脚内的标签之前检查您正在查看的行是否确实是页脚,或者,我相信,您可以获取页脚行:

var footerRow = gvProductsList.FooterRow;

编辑: 我现在没有 VS,但试试这个:

decimal newtotal;
foreach (GridViewRow row in gvProductsList.Rows)
{
   Label lblItemTotal = (Label)row.FindControl("lblItemTotal");
   decimal decPrice = decimal.Parse(lblItemTotal.Text, NumberStyles.Currency); 
   newtotal =+ decPrice;
 }
 var footerRow = gvProductsList.FooterRow;
 Label lblTotal = (footerRow.FindControl("lblTotal")) as Label;
 lblTotal.Text = "$" + Convert.ToString(newtotal);

关于c# - 总计 Gridview 上的列并显示在页脚中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37444572/

相关文章:

c# - 每个表单/其他字符串仅使用 1 个资源文件而不是 1 个资源文件

c# - 如何在 ASP.Net Core 2.x 的 Action Filter 中获取配置、Cookie 和 DBContext

c# - 以编程方式在 TabbedPage 中的选项卡之间切换

c# - 设置列唯一 null 而不是 .NET EF Core 中的索引

c# - 如何在 C# 2.0 中使用 XSLT 转换 XMLDocument

c# - 有没有更好的方法来编写这个 Frankenstein LINQ 查询,在子表中搜索值并按相关性对它们进行排序?

c# - 在 ASP.NET 中丢失 session 数据

asp.net Gridview,1 条记录跨越两行

java - 如何在 Android 中创建 10x10 网格?

ios - 自动布局在 iOS8 Xcode 6 中创建 GridView