Asp.Net教程,WinForm教程,Asp.Net MVC,vs2008教程,vs2010教程,Silverlight技术,源码下载,Asp.Net视频教程
全站热门标签
vs2010 Silverlight 存储过程 水晶报表 ADO.NET JavaScript LINQ AjaxPro DataGridView 面向对象 Extjs GridView XML DevExpress HTML教程 Oracle jQuery 分页 GDI+ Visual C++2010 MySQL Office2010 WPF MVC Dojo WCF4.0 VB.NET Sql2005 textbox cookie WCF WinForm Discuz!NT SQL经典语句 T-SQL checkbox ASPxGridView F# asp.net SQL VS2008新特性 DropDownList Access TreeView Ajax VS2008 页面执行时间 Flex 字符串 回调 VB2005 DataSet C#时间 ASP.NET性能优化 用户在线检测 动画
FrameworkC#技术 VB.NET VC.NET WCF WPF
当前位置: 主页 > WinForm教程 > C#技术 >

DataGridView添加统计行

时间:2010-07-20 23:08来源:未知 作者:admin 点击:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            dataGridView1.DataBindingComplete += delegate
            {
                AddLable(dataGridView1);
                SetSUM(dataGridView1, "PriceSUM");
            };

            dataGridView1.ColumnWidthChanged += delegate
            {
                AddLable(dataGridView1);
                SetSUM(dataGridView1, "PriceSUM");
            };

            using (SqlConnection conn = new SqlConnection("server=(local);database=Test;user id=sa;password=sa;"))
            {
                using (SqlDataAdapter adapter = new SqlDataAdapter("Select top 10 * FROM Products", conn))
                {
                    DataTable table = new DataTable();
                    adapter.Fill(table);

                    dataGridView1.DataSource = table;
                }
            }

        }

        /// <summary>
        /// 添加统计行
        /// </summary>
        /// <param name="dataGridView"></param>
        public void AddLable(DataGridView dataGridView)
        {
            Label lblParent, lblChild;
            DataGridViewColumn column;
            int height = dataGridView.Height;
            int width = dataGridView.Columns.GetColumnsWidth(DataGridViewElementStates.None);
            int scrollbarheight = dataGridView.Columns.GetColumnsWidth(DataGridViewElementStates.None) > dataGridView.Width ? 16 : 0;//水平滚动条高
            int rowheaderswidth = dataGridView.RowHeadersVisible ? dataGridView.RowHeadersWidth : 0;//行标题宽度
            int length = rowheaderswidth;

            //
            if (dataGridView.Controls[dataGridView.Name + "____"] != null)
                dataGridView.Controls.Remove(dataGridView.Controls[dataGridView.Name + "____"]);

            lblParent = new Label();
            lblParent.Name = dataGridView.Name + "____";
            lblParent.BackColor = Color.Yellow;
            lblParent.Left = 1;
            lblParent.Top = height - scrollbarheight - 23 - 1;
            lblParent.Height = 23;
            lblParent.Width = width + rowheaderswidth - 1;
            dataGridView.Controls.Add(lblParent);

            for (int i = 0; i < dataGridView.Columns.Count; i++)
            {
                column = dataGridView.Columns[i];

                if (column.Visible)
                {
                    lblChild = new Label();
                    lblChild.Name = column.Name + "____";
                    lblChild.BackColor = Color.Transparent;
                    //lblChild.Text = lblChild.Name;
                    lblChild.AutoSize = true;
                    lblChild.Left = length + ((int)column.Width / 2) - 10 + 1;
                    length += column.Width;
                    lblChild.Top = 3;
                    lblParent.Controls.Add(lblChild);
                }
            }

        }

        /// <summary>
        /// 获取列总和
        /// </summary>
        /// <param name="dataGridView"></param>
        /// <param name="columnName"></param>
        public void SetSUM(DataGridView dataGridView, string columnName)
        {
            if (dataGridView.Controls[dataGridView.Name + "____"] != null)
            {
                decimal sum = 0;

                for (int i = 0; i < dataGridView.Rows.Count; i++)
                {
                    try
                    {
                        if (dataGridView.Rows[i].Cells[columnName].Value != null)
                        {
                            sum += decimal.Parse(dataGridView.Rows[i].Cells[columnName].Value.ToString());
                        }
                    }
                    catch { }
                }

                dataGridView.Controls[dataGridView.Name + "____"].Controls[columnName + "____"].Text = sum.ToString();
            }
        }
    }
}

效果图:


 

 
(责任编辑:admin)
Tags:DataGridView
责任编辑:admin
返回顶部
------分隔线----------------------------
推荐内容
骆驼户外男 真皮磨砂日常休闲鞋 低帮 2011秋冬新款 专柜正品特价 骆驼户外男 真皮磨砂日常休闲鞋 低帮 2011秋冬新款 专柜正品特价