GridView的数据行的行合并,GridView实现合计数据项

c# 如何给dataGridView指定列(数值)进行小计汇总功能 dataGridView添加小计功能 阅读详情
以下是页面的HTML代码:
<%@ Page Language="C#" AutoEventWireup="true" StylesheetTheme="Default" Theme="Default"
    CodeFile
="InsuranceList.aspx.cs" Inherits="Employee_InsuranceList" 
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    
<title>员工保险信息</title>
</head>
<body>
    
<form id="form1" runat="server">
        
<fieldset>
            
<legend>员工保险管理</legend>
            
<div id="tabsF">
                
<ul>
                    
<li><a href="AddInsurance.aspx" title="添加员工保险"><span>添加员工保险</span></a></li>
                    
<li><a href="../Default.aspx" title="返回主页面"><span>返回</span></a></li>
                
</ul>
            
</div>
        
</fieldset>
        
<fieldset>
            
<legend>保险信息</legend>开始年份:<asp:TextBox ID="txtBDate" runat="server" />
            
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtBDate"
                ErrorMessage
="开始年份不能为空" Display="Dynamic">*</asp:RequiredFieldValidator>
            
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="txtBDate"
                Display
="Dynamic" ErrorMessage="开始年份格式不正确" ValidationExpression="^[0-9]*[1-9][0-9]*$">*</asp:RegularExpressionValidator>结束年份:
            
<asp:TextBox ID="txtEndDate" runat="server"></asp:TextBox>
            
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="txtEndDate"
                ErrorMessage
="结束年份不能为空" Display="Dynamic">*</asp:RequiredFieldValidator>
            
<asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server" ControlToValidate="txtEndDate"
                Display
="Dynamic" ErrorMessage="结束年份格式不正确" ValidationExpression="^[0-9]*[1-9][0-9]*$">*</asp:RegularExpressionValidator>
            
<asp:CompareValidator ID="CompareValidator1" runat="server" ControlToCompare="txtEndDate"
                ControlToValidate
="txtBDate" ErrorMessage="开始年份不能大于结束年份" Operator="LessThanEqual"
                Type
="Integer" Display="Dynamic">*</asp:CompareValidator>
            
<asp:Button ID="btnSel" runat="server" Text="开始查询" OnClick="btnSel_Click" />
            
<asp:GridView ID="gvInsurance" runat="server" SkinID="Default_GridView"  AutoGenerateColumns="False"
                OnDataBound
="gvInsurance_DataBound" OnRowDataBound="gvInsurance_RowDataBound" CaptionAlign="Left" OnRowDeleting="gvInsurance_RowDeleting" OnRowEditing="gvInsurance_RowEditing" ShowFooter="True">
                
<Columns>
                    
<asp:BoundField DataField="ComName" HeaderText="公司名称" />
                    
<asp:BoundField DataField="DepartName" HeaderText="部门名称" />
                    
<asp:BoundField DataField="EmpName" HeaderText="员工姓名" />
                    
<asp:BoundField DataField="InsYear" HeaderText="保险年度" />
                    
<asp:BoundField DataField="Endowment" DataFormatString="{0:C}" HeaderText="养老保险"
                        HtmlEncode
="False">
                        
<ItemStyle HorizontalAlign="Right" />
                    
</asp:BoundField>
                    
<asp:BoundField DataField="Medicare" DataFormatString="{0:C}" HeaderText="医疗保险" HtmlEncode="False">
                        
<ItemStyle HorizontalAlign="Right" />
                    
</asp:BoundField>
                    
<asp:BoundField DataField="Unemployed" DataFormatString="{0:C}" HeaderText="失业保险"
                        HtmlEncode
="False">
                        
<ItemStyle HorizontalAlign="Right" />
                    
</asp:BoundField>
                    
<asp:BoundField DataField="Fund" DataFormatString="{0:C}" HeaderText="公积金" HtmlEncode="False">
                        
<ItemStyle HorizontalAlign="Right" />
                    
</asp:BoundField>
                    
<asp:BoundField DataField="EmpCode" HeaderText="员工编号" />
                    
<asp:CommandField ShowEditButton="True" />
                    
<asp:CommandField ShowDeleteButton="True" />
                
</Columns>
            
</asp:GridView>
        
</fieldset>
        
<asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="True"
            ShowSummary
="False" />
    
</form>
</body>
</html>

 实现数据行合并是在GridView的DataBind事件进行书写:
代码如下:

protected void gvInsurance_DataBound(object sender, EventArgs e)
    
{
        GroupRows(
this.gvInsurance, 0);
        GroupRows(
this.gvInsurance, 1);
    }

    
public static void GroupRows(GridView GridView1, int cellNum)
    
{
        
int i = 0, rowSpanNum = 1;
        
while (i < GridView1.Rows.Count - 1)
        
{
            GridViewRow gvr 
= GridView1.Rows[i];
            
for (++i; i < GridView1.Rows.Count; i++)
            
{
                GridViewRow gvrNext 
= GridView1.Rows[i];
                
if (gvr.Cells[cellNum].Text == gvrNext.Cells[cellNum].Text)
                
{
                    gvrNext.Cells[cellNum].Visible 
= false;
                    rowSpanNum
++;
                }

                
else
                
{
                    gvr.Cells[cellNum].RowSpan 
= rowSpanNum;
                    rowSpanNum 
= 1;
                    
break;
                }


                
if (i == GridView1.Rows.Count - 1)
                
{
                    gvr.Cells[cellNum].RowSpan 
= rowSpanNum;
                }

            }

        }

    }
书写实现数据列合计是在RowDataBind事件里面进行书写,代码如下:
protected void gvInsurance_RowDataBound(object sender, GridViewRowEventArgs e)
    
{
        
if (e.Row.RowType == DataControlRowType.DataRow)
        
{
            e.Row.Attributes.Add(
"onmouseover", "e=this.style.backgroundColor; this.style.backgroundColor='linen'");
            e.Row.Attributes.Add(
"onmouseout", "this.style.backgroundColor=e");
        }

        
//sum info
        if (e.Row.RowType == DataControlRowType.Footer)
        
{
            
//unite cell
            e.Row.Cells[0].ColumnSpan = 11;
            
//visual 10 cell 
            for (int i = 1; i < 11; i++)
            
{
                e.Row.Cells[i].Visible 
= false;
            }

            
//get every unite cell value
            TableCell cellEndowment = e.Row.Cells[4];
            TableCell cellMedicare 
= e.Row.Cells[5];
            TableCell cellUnemployed
=e.Row.Cells[6];
            TableCell cellFund
=e.Row.Cells[7];
            TableCell cellSum 
= e.Row.Cells[8];
            
//define variable
            double endowment,medicare,unemployee,fund;
            
//set value
            endowment= GetSum(4);
            medicare
=GetSum(5);
            unemployee
=GetSum(6);
            fund
=GetSum(7);
            
//response string
            e.Row.Cells[0].Text="养老保险合计:" + String.Format("{0:C}",endowment)+
                
" 医疗保险合计:" + String.Format("{0:C}", medicare)+
                
" 失业保险合计:" + string.Format("{0:C}",unemployee)+
                
" 公积金合计:" + string.Format("{0:C}",fund)+
                
" 总计:"+string.Format("{0:C}",this.GetSum(endowment,medicare,unemployee,fund));

        }

    }

注:设置GridView的DataSource时,根据你欲合并数据行的列进行排序。
附1: 

/// <summary>
    
/// get sum 
    
/// </summary>
    
/// <param name="i">column id</param>
    
/// <returns>sum value</returns>

    private double GetSum(int i)
    
{
        
//define variable
        double sum = 0;
        
foreach (GridViewRow row in this.gvInsurance.Rows)
        
{
            sum 
+= Convert.ToDouble(string.Format("{0:2F}",row.Cells[i].Text.Remove(0,1)));
            
        }

        
return sum;
    }

    
/// <summary>
    
/// get all sum
    
/// </summary>
    
/// <param name="endowment">养老保险</param>
    
/// <param name="medicare">医疗保险</param>
    
/// <param name="unemployee">失业保险</param>
    
/// <param name="fund">公积金</param>
    
/// <returns>sum</returns>

    private double GetSum(double endowment,double medicare,double unemployee,double fund)
    
{
        
return endowment+medicare+unemployee+fund;
    }
ASP.NET中GridView实现合并表头与合计行完整方案 在大型企业级项目中,UI 设计通常遵循统一的设计语言规范(Design System)。为了确保不同页面间的表格呈现风格一致,应优先采用集中式 CSS 类定义方式,避免内联样式或重复声明带来的维护难题。以下是一个典型的全局样式类集合示例:important;这些类可在.aspx页面中直接引用,也可通过后台代码动态绑定。例如,在标记语言中为 GridView 指定整体样式:上述写法中:CssClass控制<table>根元素的整体边框与间距; 阅读详情

相关推荐

ASP.NET GridView表头合并与底部总计汇总实现指南

htmltable {th, td {th {pre {简介:在ASP.NET中,GridView控件常用于展示表格数据。本教程将指导如何在GridView中合并表头和在底部添加总计汇总行,以提高数据的可读性和用户的交互体验。这包括表头的动态合并、样式设置以及通过后台代码计算和展示数据的总和和平均值。

weixin_42361478的博客 756

C# DataGridView添加合计行

C# DataGridView添加合计行   string strcon = "Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=employee;Data Source=(local)";             string strsql="select * from class";

sadleaflzh的专栏 3807

c# datagridview 行合计

c# datagridview 行合计 在最底行增加合计,合计行不会随滚动条拉动而移动

GridView页脚添加合计字段的两种方法

第一种:直接在aspx中实现 <asp:GridView ID="GridView1" ShowFooter="true" DataKeyNames="Id" AutoGenerateColumns="false" runat="server" DataSourceID="SqlDataSource1"> <Columns> &l...

weixin_30716725的博客 273

DataGridView显示合计行 包含例子

实现如何在DataGridView中显示合计,合计行不随滚动条的滚动而变化,始终在DataGridView的可见区域的底部

AUTOSAR实战:手把手教你配置EthTsync模块,搞定车载以太网时间同步

本文详细解析AUTOSAR架构中EthTsync模块的配置方法,实现车载以太网时间同步。通过对比gPTP与PTP协议差异,提供从开发环境准备到参数配置、模块集成的全流程指南,并分享性能优化与调试技巧,帮助开发者实现微秒级同步精度,满足自动驾驶等高精度时间同步需求。

weixin_28736335的博客 375

DataGridView选中的单元格求和

DataGridView选中的单元格求和

zgscwxd的博客 990

使用SSE流式输出(Javaweb前后端实战)

SSE(Server-Sent Events)是一种在Web应用中实现单向实时通信的技术。通过SSE,服务器可以主动向客户端发送更新,而无需客户端不断发起请求。这对于需要实时更新的应用场景(如聊天应用、实时数据监控等)非常有用。(服务端单向传输客户端,长连接)

记得开心一点嘛的博客 1万+

C#的DataGridView单元格合并

3.让列表显示为合并单元格的样式。2.重新绘制样式和字符串。1.清楚单元格样式。

biyusr的专栏 3305

SoC低功耗设计实战:28nm工艺下四核A7的Hierarchical Flow全流程解析

本文深入解析了在TSMC 28nm工艺上,采用Hierarchical Flow(层次化流程)实现四核Cortex-A7 SoC低功耗设计的全流程。文章从项目背景切入,详细探讨了基于UPF的电源规划、时钟树综合、接口时序收敛以及物理验证等关键环节,分享了使用Cadence Innovus等工具进行低功耗物理实现的实战经验与挑战。

weixin_29231263的博客 324

Apache Doris集群IP变更急救指南:用Docker容器+priority_networks快速恢复FE/BE节点

本文详细介绍了Apache Doris集群在IP变更情况下的应急处理方案,通过Docker容器和priority_networks配置快速恢复FE/BE节点。文章提供了从容器化环境构建、元数据迁移到生产环境切换的全流程指南,帮助运维团队在30分钟内完成集群恢复,显著减少停机时间。

pink7的博客 114

C#实现dataGridView行的合计

private void button9_Click(object sender, EventArgs e)        {            string MJ,ym;            float a = 0, b = 0, sumMJ = 0, sumYM = 0;                       int i = 0;        //行索引             

zhgyuhui的专栏 1120

NVIDIA B300 vs B200:详细解析与性能对决

详细解析 NVIDIA B300 整机)的性能,并与前代的 B200 进行对比。它不仅在核心计算能力(FP8)上实现了飞跃,更重要的是通过革命性的第二代 Transformer Engine 和第五代 NVLink 技术,彻底重塑了大规模 AI 模型训练和推理的效率与规模上限。其显存容量和带宽的巨大提升也为处理超大型模型和数据提供了坚实基础。与 B200 相比,B300 是一次全面的、代际性的性能跃升,特别适合那些需要处理最前沿、最复杂 AI 和科学计算任务的用户和组织。

2401_89353317的博客 3064

Gridview控件分页后获得总行数

问题导入:Gridview控件分页后可能要求总记录数(即总行数),在ASP.NET里怎么写呢? 获得总行数参考以下作者: 下面只讲后端的代码: if (GridView1.PageCount > 0) // 如果页数大于0 { GridView1.PageIndex = GridView1.PageCount - 1; // 将当前显示页的索引转到最后一页 GridView1.DataBind()...

weixin_49527015的博客 1029

2026 最新安全 Skill 合集(CTF / 审计 / 渗透 / 红队)威胁建模一网打尽

2026年安全领域进入"Skill化"时代,各类安全能力被结构化封装为可复用的AI Skill。本文介绍了7个核心安全Skill项目:渗透测试全流程的AgentSkillsHub、CTF解题技能库ctfskills、多语言代码审计工具codeaudit、PHP专项审计系统、Java自动化审计流水线、威胁建模工具threatmodeling以及覆盖30+领域的Anthropic-Cybersecurity-Skills。这些项目将传统安全经验转化为标准化、可验证、可自动执行的模块化能力,支

Chengbei11的博客 1883

养龙虾之_因特尔UHD/ULtra/Arc核显跑大模型_安装ollama_跑qwen3.5:0.8b/9b_使用copaw1.0.1测试_并配置copaw技能效果炸裂---AI大模型应用探索0019

摘要:本文探讨了利用Intel UHD770核显运行大语言模型的可能性。通过使用Intel发布的ipex-llm项目工具包,成功在核显上运行了Qwen3.5系列模型。测试发现0.8B小模型运行流畅(3-5秒响应),但智能程度有限;而9B大模型虽然效果更好,但响应时间长达2分钟,且GPU/CPU占用率不高。实验证明Intel核显确实可以运行LLM,但实际效果和性能表现仍有提升空间,特别是对大模型的支持尚不理想。

添柴程序猿的专栏 236

asp.net GridView 在报表底部增加合计行

首先:在GridView 属性设置中,ShowFooter 设为 true方法一:使用SQL查询统计出合计值,在绑定GridView时让其结果赋于一个DataTable(全局变量),然后在RowDataBound事件中if (e.Row.RowType == DataControlRowType.Footer)        ...{            e.Row.Cells[0].T

脑瓜子的程序人生 4686

PCIe(二) —— 配置空间

好了,这一篇我们把配置空间的结构,分配和访问,都大概总结了一遍,并且还介绍了它们的头部字段和这些字段的意义,包括BAR和消息路由的原理。之后,如果有时间,我们会继续来探索PCIe的数据报文的结构和传输等等。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 1767

怎么把GridView表格合并行

Grid View

m0_64244048的博客 1322

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

C#-DataGridView控件中增加合计和平均值

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace SumAn...

dxm809的博客 1952

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

EasyUI Datagrid 数据网格,动态生成table,合计一列数据

EasyUI Datagrid 数据网格,动态生成table,合计一列数据

weixin_53987328的博客 1158

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

GridView 显示数据,在页脚添加合计

  GridView 显示数据,在也脚添加合计首先设置 ShowFooter为True double totalMoney, iMoney;//消费金额 double totalBZ, iBZ;//补助合计 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)    {         

胡杨树 1885

asp.net增加合计行

protected void gvWorkOrder_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) //检查是否为datarow { totalcash += Co...

anmangchen6041的博客 241

NET中GridView添加行合计

我们经常做查询功能,让查询出的数据在GridView中显示。现在有一张表叫员工产量表,表字段如下:1.员工工号  (AgentId)2.订单编号 (OrderNo)3.订单日期 (OrderDate)4.员工所在班组名称 (GroupNm) 需求:查询出某个时间内员工的订单总量且对每个班组进行小计。样子如下:班组名称001    工号001    订单数班组名称

wuxiaowwj的专栏 1618

asp.net2.0分页的实现(GridView)

一、cs 页面代码 protected void Page_Load(object sender, System.EventArgs e)  {            if (!Page.IsPostBack)            {                GridViewBind("");            }              } private void Gri

beacyqm的专栏 1340

sql Asp.net 生成 小计 合计

数据如下:(sql 2008 R2版本) 页面显示如下: sql代码如下: select [name],[groupName],SUM(total) as totalCount,GROUPING(name),GROUPING(groupName)from testTable group by name,groupName with rollup   执行结果如下:

pengfeihe0123的专栏 2043
上一篇: 数据流程图
下一篇: 将GridView内数据导入到Excel
striveman
博客等级 码龄20年 27粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值