zoukankan      html  css  js  c++  java
  • 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; }
        }
    }
    View Code

    合计我使用的是Panel对象。

    定义对象:Panel对象名为pan,DataGridView对象名为DGV

    合计行DLL下载链接(永久有效):http://pan.baidu.com/s/1c2mtZ1I

    转载请说明出处:http://www.cnblogs.com/haibing0107/p/6823516.html 作者:涂山吕吕

  • 相关阅读:
    利用GitHub+Node.js+Hexo搭建个人博客(一)
    更丰富的符号工具包 Font Awesome
    Markdwon入门2
    Codechef:Fibonacci Number/FN——求通项+二次剩余+bsgs
    二次剩余理论
    基姆拉尔森公式和蔡勒公式(计算星期几)
    幂方程(模意义下)
    etcd
    mysql group by
    UUID
  • 原文地址:https://www.cnblogs.com/haibing0107/p/6823516.html
Copyright © 2011-2022 走看看