在Delphi里面的DataGrid控件有很好的功能:表头可以多列,可以合并。尤其是带有数值的列可以产生合计一行,不知道哪位高手能否在C#里的Windows Form的DataGridView里面实现?

解决方案 »

  1.   

    操作数据集,新建一行,把计算好的数据加进DATASET,然后再绑定。
      

  2.   

    如果是编辑时显示,可能要自己做个控件了,具体怎么做,我也想知道 
    如果只是从数据库读资料,就简单些-----------------------------------
    用 ROLLUP 汇总数据
    在生成包含小计和合计的报表时,ROLLUP 运算符很有用。ROLLUP 运算符生成的结果集类似于 CUBE 运算符所生成的结果集。有关更多信息,请参见用 CUBE 汇总数据。 CUBE 和 ROLLUP 之间的区别在于: CUBE 生成的结果集显示了所选列中值的所有组合的聚合。
    ROLLUP 生成的结果集显示了所选列中值的某一层次结构的聚合。 
    例如,简单表 Inventory 中包含:Item                 Color                Quantity                   
    -------------------- -------------------- -------------------------- 
    Table                Blue                 124                        
    Table                Red                  223                        
    Chair                Blue                 101                        
    Chair                Red                  210                        下列查询将生成小计报表:SELECT CASE WHEN (GROUPING(Item) = 1) THEN 'ALL'
                ELSE ISNULL(Item, 'UNKNOWN')
           END AS Item,
           CASE WHEN (GROUPING(Color) = 1) THEN 'ALL'
                ELSE ISNULL(Color, 'UNKNOWN')
           END AS Color,
           SUM(Quantity) AS QtySum
    FROM Inventory
    GROUP BY Item, Color WITH ROLLUPItem                 Color                QtySum                     
    -------------------- -------------------- -------------------------- 
    Chair                Blue                 101.00                     
    Chair                Red                  210.00                     
    Chair                ALL                  311.00                     
    Table                Blue                 124.00                     
    Table                Red                  223.00                     
    Table                ALL                  347.00                     
    ALL                  ALL                  658.00                     (7 row(s) affected)如果查询中的 ROLLUP 关键字更改为 CUBE,那么 CUBE 结果集与上述结果相同,只是在结果集的末尾还会返回下列两行:ALL                  Blue                 225.00                     
    ALL                  Red                  433.00                     CUBE 操作为 Item 和 Color 中值的可能组合生成行。例如,CUBE 不仅报告与 Item 值 Chair 相组合的 Color 值的所有可能组合(Red、Blue 和 Red + Blue),而且报告与 Color 值 Red 相组合的 Item 值的所有可能组合(Chair、Table 和 Chair + Table)。对于 GROUP BY 子句中右边的列中的每个值,ROLLUP 操作并不报告左边一列(或左边各列)中值的所有可能组合。例如,ROLLUP 并不对每个 Color 值报告 Item 值的所有可能组合。ROLLUP 操作的结果集具有类似于 COMPUTE BY 所返回结果集的功能;然而,ROLLUP 具有下列优点: ROLLUP 返回单个结果集;COMPUTE BY 返回多个结果集,而多个结果集会增加应用程序代码的复杂性。
    ROLLUP 可以在服务器游标中使用;COMPUTE BY 不可以。
    有时,查询优化器为 ROLLUP 生成的执行计划比为 COMPUTE BY 生成的更为高效。 
      

  3.   

    不得不说现成的控件好:
       Janus GridEX,自带统计功能(分组、统计、筛选)
      

  4.   

    net里面确实没有这样的功能,你要自己做处理,加载完数据后,根据加载的数据计算一下,添加一行进去。
      

  5.   

    DevExpress中的表格控件可以实现你的要求
      

  6.   

    去CodeProject找找吧我看到一个不知道是不是你要得效果:
    http://www.codeproject.com/cs/miscctrl/OutlookGrid.asp
      

  7.   


    net里面确实没有这样的功能,你要自己做处理,加载完数据后,根据加载的数据计算一下,添加一行进去。正解!
      

  8.   

    哈哈!
    这里正好有一篇楼主看看
    http://blog.csdn.net/mengyao/archive/2006/11/29/1419881.aspx