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 期间主要部分也是借鉴官方论坛上的 ...
随机推荐
- 联想笔记本装win7
http://jingyan.baidu.com/article/7c6fb42862d63a80642c90b8.html http://bbs.thinkworldshop.com.cn/thre ...
- [Postgres] Update and Delete records in Postgres
Delete example: DELETE FROM movies ; Update example: UPDATE movies ;
- android之ContentProvider和Uri具体解释
一.使用ContentProvider(内容提供者)共享数据 在android中ContentProvider的作用是对外共享数据,就是说能够通过ContentProvider把应用中的数据共享给其它 ...
- JAVA中String类的intern()方法的作用
一般我们变成很少使用到 intern这个方法,今天我就来解释一下这个方法是干什么的,做什么用的 首先请大家看一个例子: public static void main(String[] args) t ...
- 【BZOJ 1016】[JSOI2008]最小生成树计数(搜索+克鲁斯卡尔)
[题目链接]:http://www.lydsy.com/JudgeOnline/problem.php?id=1016 [题意] [题解] /* 两个最小生成树T和T'; 它们各个边权的边的数目肯定是 ...
- 检索05 --static静态方法 和 非静态方法
C#静态变量使用static 修饰符进行声明,在类被实例化时创建,通过类进行访问不带有 static 修饰符声明的变量称做非静态变量,在对象被实例化时创建,通过对象进行访问一个类的所有实例的同一C#静 ...
- fastjson空对象不显示问题
今天在网上找了半天,看到一个大神自己搭建的网站,贴出了这个问题的解决办法,大家共享一下,对那些牛X的大神膜拜吧. 例子: Map < String , Object > jsonMap = ...
- How to provide highlighting with Spring data elasticsearch
How to provide highlighting with Spring data elasticsearch @Test public void shouldReturnHighlighted ...
- matlab 高阶(三)—— 插值(fft、)
1. FFT 插值 y = interpft(x,n) y = [0, .5, 1., 1.5, 2., 1.5, 1., .5, 0, -.5, -1, -1.5, -2., -1.5, -1., ...
- 将git文件挂到cdn上
网址:http://raw.githack.com/