从GridView中获取特定列的总计值

2024-03-25

Him

我正在使用 ASP.NET/VB.NET 和 SQL-Server-2012。

我有一个 GridView 列,其中包含 3 个字段和 1 个模板字段,如下所示:

<asp:GridView ID="grdItems" runat="server" AutoGenerateColumns="False" CellPadding="4" DataSourceID="SqlDataSource3" Font-Names="Tahoma" ForeColor="#333333" GridLines="None">
    <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
    <Columns>
        <asp:BoundField DataField="item_name" HeaderText="Item" SortExpression="item_name" />
        <asp:BoundField DataField="item_cost" HeaderText="Cost (inc. VAT)" SortExpression="item_cost" />
        <asp:BoundField DataField="item_quantity" HeaderText="Quantity" SortExpression="item_quantity" />
        <asp:TemplateField HeaderText="Sub-Total (inc. VAT)">
            <ItemTemplate>
                <asp:Label ID="TextBox3" runat="server" Text='<%# Convert.ToInt32(Eval("item_quantity")) * Convert.ToDouble(Eval("item_cost"))%>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField>
            <FooterTemplate>
                <asp:Label ID="lblTotalPrice" runat="server" />
            </FooterTemplate>                  
        </asp:TemplateField>
    </Columns>
    <EditRowStyle BackColor="#999999" />
    <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
    <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" HorizontalAlign="Center" VerticalAlign="Middle" />
    <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
    <RowStyle BackColor="#F7F6F3" ForeColor="#333333" HorizontalAlign="Center" VerticalAlign="Middle" />
    <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
    <SortedAscendingCellStyle BackColor="#E9E7E2" />
    <SortedAscendingHeaderStyle BackColor="#506C8C" />
    <SortedDescendingCellStyle BackColor="#FFFDF8" />
    <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
</asp:GridView>

背后代码:

Imports System.Data.SqlClient
Imports System.Data

Partial Class ProjectReport
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load

        Dim ProjectID = Session("project_id")
        Session("ProjectID") = ProjectID

    End Sub
    Protected Sub grdItems_RowDataBound(sender As Object, e As GridViewRowEventArgs)

        Dim totalPrice As Decimal = 0

        If e.Row.RowType = DataControlRowType.DataRow Then


            Dim lblPrice As Label = DirectCast(e.Row.FindControl("lblTotalPrice"), Label)

            Dim price As Decimal = [Decimal].Parse(lblPrice.Text)


            totalPrice += price

        End If

        If e.Row.RowType = DataControlRowType.Footer Then
            Dim lblTotalPrice As Label = DirectCast(e.Row.FindControl("lblTotalPrice"), Label)

            lblTotalPrice.Text = totalPrice.ToString()


        End If
    End Sub


End Class

数据绑定()

   Private Sub BindData()

        Dim conn As New SqlConnection("Data Source=BRIAN-PC\SQLEXPRESS;Initial Catalog=master_db;Integrated Security=True")
        Dim query As New SqlCommand("SELECT Items.item_name, Items.item_cost, project_items.item_quantity FROM Items INNER JOIN project_items ON items.item_id = project_items.item_id WHERE project_items.project_id = @parameter", conn)

        query.Parameters.AddWithValue("@UserID", Session("ProjectID"))

        Dim da As New SqlDataAdapter(query, conn)

        da.SelectCommand = query

        Dim table As New DataTable()




        da.Fill(table)

        grdItems.DataSource = table
        grdItems.DataBind()
    End Sub

最后一列(模板字段)将数量字段与成本字段相乘。

如何计算模板字段中的所有值(通过相加)?


您必须使用数据绑定事件来对值求和。看这个例子 http://www.codeproject.com/Articles/35187/Summing-Columns-in-a-GridView并适应您的需求:

private Decimal OrderTotal;

protected void GridView1_DataBinding(object sender, EventArgs e)
{ 
    OrderTotal = 0.0M;
}

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        //Keep adding the subtotal here
        OrderTotal += Subtotal;               
    }
}

protected void GridView1_DataBound(object sender, EventArgs e)
{      
    //Set a control with the total sum
    LabelOrderTotal.Text = OrderTotal.ToString("C");
}

基本上你不断地添加值RowDataBound事件并在DataBound如果您设置了带有总和的标签。或者,您可以迭代您的网格DataBound事件并将所有内容相加。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从GridView中获取特定列的总计值 的相关文章

随机推荐

  • 异常和SQLException之间的区别

    有人可以解释一下捕捉和捕捉之间的区别吗 Exception并抓住一个SQLException 我知道如果你选择打印异常错误 SQLException会打印出更多信息 但是还有其他的吗 try code catch Exception ex
  • 如何使用 Android MediaCodec 生成 AAC ADTS 基本流

    我正在尝试做的事情 使用 Android 的 MediaCodec 将原始 PCM 音频样本编码为原始 AAC 文件 我遇到的问题是 当我使用 FFMPEG 将生成的原始 AAC 文件打包到 M4A 容器中时 FFMPEG 抱怨文件中缺少编
  • 无法在 Samsung 上将数据库从版本“n”降级到“n-1”

    我有一个带有数据库的应用程序 使用标准 SQLiteOpenHelper 创建和打开 每当我升级数据库版本时 我也会升级应用程序的版本代码 因此数据库没有办法下降 数据库版本号总是增加 从不减少 我通过设置禁用了应用程序中的数据库备份and
  • PHP:=0D、=A20 符号

    从电子邮件正文获取信息后 我有很多符号 例如 0D A20 等 我该如何删除它们 我不想使用 body str replace A20 body 因为如果电子邮件正文确实包含该内容 它将被替换 有任何想法吗 谢谢 不要将它们替换为空 这些字
  • 在导航回 UINavigationController 堆栈中的上一个控制器之前向用户提示 UIAlertView

    我试图在导航到前一个控制器之前提示 UIAlertView 并在用户决定留在同一视图控制器上时阻止导航 使用CCT后退按钮操作助手 https github com weipin CCTBackButtonAction UIAlertVie
  • 翻转列表/元组的Pythonic方法[重复]

    这个问题在这里已经有答案了 翻转 列表 元组的最Python方式是什么 我所说的翻转的意思是 如果你有一个元组的元组 你可以使用像 tuple a b 这样的语法 翻转 它 这样你就可以执行 tuple b a 来获得相同的结果物品 一个例
  • TensorFlow - 显示会话中的所有变量

    我玩过一点 import tensorflow as tf x tf Variable 1 0 2 0 initializer tf global variables initializer session run initializer
  • ARM NEON:如何实现 256 字节查找表

    我正在使用内联汇编将我编写的一些代码移植到 NEON 我需要的一件事是将范围 0 128 的字节值转换为表中采用完整范围 0 255 的其他字节值 该表很短 但其背后的数学并不容易 因此我认为不值得每次 即时 计算它 所以我想尝试查找表 我
  • 如何在 tkinter 中获取条目的值?

    我正在尝试使用 Tkinter 的 Entry 小部件 我无法让它做一些非常基本的事情 返回输入的值 有谁知道为什么这么简单的脚本不会返回任何内容 我尝试了很多组合并研究了不同的想法 该脚本运行但不打印该条目 from Tkinter im
  • WPF C# 列表框外部滚动按钮

    您好 有一个列表框 我想要外部按钮来滚动列表框 我怎样才能实现这个目标 感谢您的帮助和示例 添加按钮点击处理程序 private void buttonUp Click object sender RoutedEventArgs e if
  • 干扰者:日记示例

    我对关于日志记录步骤的最常见 或推荐 disruptor 实现感到好奇 我最常见的问题是 它是如何实际实现的 通过示例 使用 JPA 明智吗 常用的数据库是什么 已经使用disruptor实施项目的社区 在中间处理程序 EventProce
  • Amazon S3 避免覆盖同名的对象

    如果我将文件上传到 S3 其文件名与存储桶中对象的文件名相同 则会覆盖该文件 有哪些选项可以避免覆盖具有相同文件名的文件 我在存储桶中启用了版本控制 认为这可以解决问题 但对象仍然被覆盖 我上面的评论不起作用 我以为WRITEACL 也适用
  • 如何从标准输入读取输入并强制编码?

    目标是不断地阅读stdin并强制执行utf8在Python2和Python3中 我尝试过以下解决方案 以与 python2 和 python3 兼容的方式将字节写入标准输出 https stackoverflow com questions
  • ER_CON_COUNT_ERROR:node-mysql 中连接过多错误

    我是节点初学者 以下是我尝试使用 Node mysql 执行的代码 但它一直给我这个错误 error connecting Error ER CON COUNT ERROR Too many connections CODE var siz
  • 在服务器上找不到 Git LFS 文件

    我们一直在使用 Git 和由我们自己的 Gitlab 实例托管的 git lfs 有时 当某个特定用户推送文件时 其中一些文件 似乎是 png 文件 不会进入 LFS 存储 而是添加到 git 中 当这种情况发生在他们的机器上时 我还无法看
  • 在 http 请求中使用 `retryWhen`

    我已经延长了Http类来设置默认标头并处理 angular2 应用程序内所有请求的错误 我想使用retryWhen 对某些错误重试请求 哪些错误应该retryWhen重试请求以及出现哪些错误时应停止 Injectable export cl
  • java中内部类和局部内部类有什么区别?

    如果一个类是本地内部类 这是否意味着它位于另一个类的方法内部 或者是否意味着它只是在某个地方的另一个方法中定义 例如 在下面的代码中 MenuListener 是否被视为内部本地类 import java awt import java a
  • iOS:是否可以同时从耳机和扬声器发送音频?

    我们希望从耳机插孔发送一些串行数据 但仍然希望能够从扬声器播放音频 是否可以将输出发送到两者 如果是这样 是否可以向每个发送不同的音频 据我所知还没有 您可以获得有关路由何时更改 即当有人连接耳机线时 的编程通知 但您无法指定用于输出的设备
  • 我想对 dict 进行子类化并设置默认值

    我需要创建一个特殊的 dict 子类 在其中我想为一组键设置默认值 我似乎无法找到执行此操作的正确语法 这是我一直在尝试的 class NewDict dict Key1 stuff Key2 Other stuff NoList Nada
  • 从GridView中获取特定列的总计值

    Him 我正在使用 ASP NET VB NET 和 SQL Server 2012 我有一个 GridView 列 其中包含 3 个字段和 1 个模板字段 如下所示