C# DataGridView合计行
在网上搜了很多关于DataGridView合计行的设计及源码,都不是很合我心意。于是自己写了一个关于合计行的DLL。以后每次要用到合计行的时候只要引用这个DLL就可以了。
效果图如下:

引用Dll:

附上例子源码:
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} TSumRow.TSumCols tsc = new TSumRow.TSumCols();
List<Jyinfo> ListJy = new List<Jyinfo>(); private void Form1_Load(object sender, EventArgs e)
{
DGV.AutoGenerateColumns = false; //禁止自动创建列
DGV.AllowUserToResizeColumns = false; //禁止自动调整列宽
} private void button1_Click(object sender, EventArgs e)
{
GetData();
} /// <summary>
/// 获取数据
/// </summary>
private void GetData()
{
Jyinfo j = null;
List<Jyinfo> listjy = new List<Jyinfo>();
using (SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=Test;User ID=sa;Password=123456"))
{
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = @"SELECT [Id],[Name],[Age],[Sl],[Zl],[Dj],[Je] FROM [dbo].[JyInfo]";
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
j = new Jyinfo(); j.Id = Convert.ToInt32(reader["Id"]);
j.Name = reader["Name"].ToString();
j.Age = Convert.ToInt32(reader["Age"]);
j.Sl = Convert.ToInt32(reader["Sl"]);
j.Zl = Convert.ToInt32(reader["Zl"]);
j.Dj = Convert.ToInt32(reader["Dj"]);
j.Je = Convert.ToInt32(reader["Je"]); listjy.Add(j);
}
reader.Close();
}
ListJy = listjy;
DGV.DataSource = ListJy; #region 汇总行 《以下就是显示DataGridView合计行的代码》
List<TSumRow.TColumns> listTc = new List<TSumRow.TColumns>();
TSumRow.TColumns Tc = new TSumRow.TColumns();
Tc.Col_Name = "Col_Id"; //DataGridView列的序号列列名
Tc.Col_Value = "合计:"; //要显示在合计行的值
listTc.Add(Tc); Tc = new TSumRow.TColumns();
Tc.Col_Name = "Col_Name"; //DataGridView列的姓名列列名
var q = from b in ListJy
group b by b.Name;
Tc.Col_Value = q.Count().ToString();//汇总多少个客户
listTc.Add(Tc); Tc = new TSumRow.TColumns();
Tc.Col_Name = "Col_dj"; //DataGridView列的单价列列名
Tc.Col_Value = string.Format("{0:F2}", ListJy.Average(a => a.Dj));//平均单价
listTc.Add(Tc); Tc = new TSumRow.TColumns();
Tc.Col_Name = "Col_je"; //DataGridView列的金额列列名
Tc.Col_Value = string.Format("{0:F2}", ListJy.Sum(a => a.Je)); ;//总的销售额
listTc.Add(Tc); tsc.AddHz(listTc, DGV, pan);
#endregion
}
} /// <summary>
/// 交易信息实体类
/// </summary>
[Serializable]
public class Jyinfo
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public int Sl { get; set; }
public int Zl { get; set; }
public int Dj { get; set; }
public int Je { get; set; }
}
}
合计我使用的是Panel对象。
定义对象:Panel对象名为pan,DataGridView对象名为DGV
合计行DLL下载链接(永久有效):http://pan.baidu.com/s/1c2mtZ1I
转载请说明出处:http://www.cnblogs.com/haibing0107/p/6823516.html 作者:涂山吕吕
C# DataGridView合计行的更多相关文章
- 分享一个带有合计行功能的DataGridView扩展
因为一个Winform的项目中需要用到带有合计行的表格,并且需要满足以下需求: 合计行可自动对需要求和的列进行求和计算; 合计行必须固定(冻结)在表格的最底部,且其位置不受滚动条的滚动而移动; 可以设 ...
- winform DataGridView添加合计行
使用方法 /* DataTable dt= DBUtility.DB.FromSql(sql).ToDataTable(); DataGridViewAddSumRow sumRow = new Da ...
- C# DataGridView显示行号的三种方法
方法一: 网上最常见的做法是用DataGridView的RowPostPaint事件在RowHeaderCell中绘制行号: private void dgGrid_RowPostPaint( obj ...
- NC nc5.x报表设置合计行是否显示
首先要先继承UI类 /** * 设置合计行是否显示 */ public TotalsReportUI() { super(); getReportBase().getBodyPanel().setTo ...
- FineUI大版本升级,外置ExtJS库、去AXD化、表格合计行、表格可编辑单元格的增删改、顶部菜单框架
这是一篇很长的文章,在开始正文之前,请允许我代表目前排名前 20 中唯一的 .Net 开源软件 FineUI 拉下选票: 投票地址: https://code.csdn.net/2013OSSurve ...
- DataGridView显示行号的几种方法来自http://www.soaspx.com/dotnet/csharp/csharp_20100204_2740.html
方法一: 网上最常见的做法是用DataGridView的RowPostPaint事件在RowHeaderCell中绘制行号: private void dataGridView1_RowPostPai ...
- 【转】DataGridView显示行号
ref:http://blog.csdn.net/xieyufei/article/details/9769631 方法一: 网上最常见的做法是用DataGridView的RowPostPaint事件 ...
- 对FineU框架Grid多表头合计行导出Excel的回顾
年前用FineUI开发遇到了这样一个问题,Grid多表头合计行不能导出,后面到官方示例找了一下,庆幸的是找到了多表头的导出示例.然后当时为了省事,直接就复制粘贴完事,也没有仔细的研究代码.后来运行一看 ...
- 给Extjs的GridPanel增加“合计”行(转)
再Google,找到一个看似写的比较好的 http://www.cnblogs.com/over140/archive/2009/05/06/1449892.html 期间主要部分也是借鉴官方论坛上的 ...
随机推荐
- AndroidClipSquare安卓实现方形头像裁剪
安卓实现方形头像裁剪 实现思路.界面可见区域为2层View 最顶层的View是显示层,主要绘制半透明边框区域和白色裁剪区域,代码比較easy. 第二层继承ImageView,使用ImageView的M ...
- Erlang 杂记
学习Erlang的时候在书的留白处随手记录了一些东西,还有一些记录在了demo的注释里面,今天抽时间整理出来了一部分,分享一下. Erlang的设计哲学是为每一个独立的事件创建一个新进程. Erlan ...
- windows server 安装 mysql – 畅玩Coding
原文:windows server 安装 mysql – 畅玩Coding windows server 安装 mysql 2018年12月11日2018年12月11日 admin 下载:https: ...
- Spring Boot with JSP and Tiles3
Spring Boot with JSP and Tiles3 Using tiles and jsp on a Spring Boot 1.2.7 project file: pom.xml und ...
- Gram 矩阵性质及应用
v1,v2,-,vn 是内积空间的一组向量,Gram 矩阵定义为: Gij=⟨vi,vj⟩,显然其是对称矩阵. 其实对于一个XN⋅d(N 个样本,d 个属性)的样本矩阵而言,X⋅X′ 即为 Gram ...
- 冒泡排序 和 选择排序的 区别 python
参考:https://www.cnblogs.com/banana201/p/4928733.html ## 冒泡排序法(Bubblesort) ## 所谓排序法,就是对一组无序的序列进行有序的排序( ...
- C#常用多线程方法
1. Thread类 C#多线程编程中Thread类需要包含名称空间System.Threading. class Program { static void Main(string[] args) ...
- 微信公众平台消息接口开发(26)从Hello2BizUser文本到subscribe事件
微信公众平台 微信公众平台开发模式 消息接口 企业微信公众平台 Hello2BizUser subscribe 订阅事件 作者:方倍工作室 原文:http://www.cnblogs.com/txw1 ...
- 用acharengine作Android图表
首先要下载acharengine的包,里面重要的有lib和一些简易的工具,等下我附在文件夹里,而这些包都必须调用的. 然后以下附上主要的作图代码: package org.achartengine.c ...
- Leetcode 319 Bulb Switcher 找规律
有n盏关着的灯,第k轮把序号为k倍数的关着的灯打开,开着的灯关闭. class Solution { public: int bulbSwitch(int n) { return (int)sqrt( ...