http://www.cnblogs.com/xvqm00/archive/2009/02/17/1392282.html

解决方案 »

  1.   


    写了一个例子:
       private void Form1_Load(object sender, EventArgs e)
            {          
                dataGridView1.DataSource = GetData();    
            }
     private void button1_Click(object sender, EventArgs e) 
         {
             DataGridView gw =dataGridView1;
             TotalRow(gw);
         }
     #region 合计行
         public void TotalRow(DataGridView dg)
         {     
             DataGridViewRow dgr = dg.Rows[dg.Rows.Count - 1];
             dgr.ReadOnly = true;
             dgr.DefaultCellStyle.BackColor = System.Drawing.Color.Khaki;
             dgr.Cells[0].Value = "合计";
             for (int i = 0; i < dg.Rows.Count - 1; i++)
             {
                 dgr.Cells[2].Value = Convert.ToSingle(dgr.Cells[2].Value) + Convert.ToSingle(dg.Rows[i].Cells[2].Value);
             }
         }
         #endregion
     private System.Data.DataTable GetData()
         {
             System.Data.DataTable tableInfo = new System.Data.DataTable();         DataColumn dctime = new DataColumn("Time", Type.GetType("System.String"));
             DataColumn dcCity = new DataColumn("City", Type.GetType("System.String"));
             DataColumn dcCount = new DataColumn("Count", Type.GetType("System.Int32"));
             tableInfo.Columns.Add(dctime);
             tableInfo.Columns.Add(dcCity);
             tableInfo.Columns.Add(dcCount);
             DataRow dr = tableInfo.NewRow();
             dr["Time"] = "1:00";
             dr["City"] = "10";
             dr["Count"] = "15";
             tableInfo.Rows.Add(dr);
             DataRow dr1 = tableInfo.NewRow();
             dr1["Time"] = "2:00";
             dr1["City"] = "12";
             dr1["Count"] = "19";
             tableInfo.Rows.Add(dr1);
             DataRow dr2 = tableInfo.NewRow();
             dr2["Time"] = "3:00";
             dr2["City"] = "13";
             dr2["Count"] = "25";
             tableInfo.Rows.Add(dr2);
             DataRow dr3 = tableInfo.NewRow();
             dr3["Time"] = "4:00";
             dr3["City"] = "14";
             dr3["Count"] = "10";
             tableInfo.Rows.Add(dr3);         DataRow dr4 = tableInfo.NewRow();
             dr4["Time"] = "5:00";
             dr4["City"] = "15";
             dr4["Count"] = "11";
             tableInfo.Rows.Add(dr4);         DataRow dr5 = tableInfo.NewRow();
             dr5["Time"] = "6:00";
             dr5["City"] = "16";
             dr5["Count"] = "17";
             tableInfo.Rows.Add(dr5);         DataRow dr6 = tableInfo.NewRow();
             dr6["Time"] = "7:00";
             dr6["City"] = "17";
             dr6["Count"] = "20";
             tableInfo.Rows.Add(dr6);         DataRow dr7 = tableInfo.NewRow();
             dr7["Time"] = "8:00";
             dr7["City"] = "12";
             dr7["Count"] = "13";
             tableInfo.Rows.Add(dr7);
             return tableInfo;
         }
      

  2.   

    可以 在数据库中 查询数据的时候,把合计也查询出来 ,返回dataTable,绑定。
    再者 可以使用Devexpress中的DataGrid定义合计。
    http://blog.csdn.net/duanzi_peng/article/details/17793667
      

  3.   

    楼上做法我在网上也看到过,一直没明白这么基础的东西,微软的控件为什么会没有。http://www.cnblogs.com/NetWZ/archive/2010/10/27/1862097.html
    这个看起来稍微好看点
      

  4.   


    你这都是废话,我们应该关注我们的东西,而不是在这些破事上展示技能。delphi这么古老的东西在这一点上上就实现的很完美了,C#到现在还没有。这不是不思进取吗?你还在这里为微软开脱
      

  5.   

    to: wangnaisheng  不好意思啊我是说jointan这位的,不小心点错了
      

  6.   


    你太年轻,不知水深浅,我最近就被Microsoft Dynamic CRM这个产品给搞悖了,当你感到一个新产品做了太多本来应该你做的事时,你才会明白不让它去替你完成一件你不想做的事有多难.
      

  7.   

    当年我极度的想在VB中实现PB的DataWindow,后来C#出来了,这个想法一下变得非常容易实现,但后来,我再也没有编过类似DataWindow产品,估计和你的这个想法差不多.
      

  8.   

    嗯,没玩过delphi,但2楼的方法可行,你也可以在datasource里自己添加一行,再用循环的方式相加,我更喜欢在datasource里做文章。我最近几个月一直在做数据挖掘,碰到很多有意思的问题,我对微软的framework不能跨平台运行一直很不满意,其技术应该早就解决这类问题,但现在还只能用第三方模拟来实现,如果能实现跨平台,这是多么有美好,扯远了。如果delphi能做自动做出合计的功能,那我举几个例子,如果第一列需要合计,那“合计”这两个字放哪?
    如果列的类型是string,但里面存的某行是数字某行是非数字,它又怎么实现合计?
    如果是指定列,那如果我需要最下面多出个列来实现合计中的合计又怎么实现?以上问题纯是感兴趣问问,并不是为了微软开脱,微软在简单的合计上确实需要增加一个功能,其本身也不难,可能就是太简单了,所以忽视了。
      

  9.   

    你没用过delphi而已,随便那一列都可以方便的计算求和,行数,静态
    都可以设置格式的