C# DataGridView合计行完整解决方法

  在网络上看过很多关于 DataGridView合计的设计及源码,搜到了很多相同的文章(都是相互复制),一点创新都没有。

普遍存在的问题是用户体现不行,或存在很多BUG等。。

   很多的人写的解决办法如下几条:

  1. DataGridView的最后一行作为合计行,每增加或删除一行后重新计算合计行。
  2. 用两个大小相同的DataGridView,一个是数据表格,一个是合计表格。
  3. 第三个是用Table类SUM增加一条合计行数据,再显示到DataGridView中。
  4. 干脆用第三方控件。。。。。。。。

  以上出现的问题:

  合计行不能显示在DataGridView界面的最下方,用户只能滚条到表格最后才能看到合计。

  如果用两个DataGridView,那我只能说他是“天才”,我想性能怎么样,大家可想而知。

  如果用Table类SUM一条,同样会产生只能要最后一行看到,如果别人不使用Table显示到DataGridView中怎么办。

 

上述的都不能很好的解决DataGridView合计行,以下是我个人设计原理与说明:

  首先我们解决的是不管用什么方式填充DataGridView数据都能够合计数据。

  必须显示在DataGridView界面的最下方,这样用户体验深刻一点。

从上我们可以看到,我们要做到合计行的话,我们必须在表现层(UI)做,不要在逻辑层与数据层做,(如果出错的话只是显示错误)

最终效果如下:

 C# DataGridView合计行完整解决方法_第1张图片

 

  

 合计我使用的是Lable对象。DataGridView需要处理的事件有单元格的数据改变事件CellValueChanged,滚动条事件,列宽事件,这件事件发生后重绘Lable及计算所需要列数据。

 定义对象:Lable对象名为FootSumLabel,DataGridView对象名为DetailDataGrid

 

代码
 
     

你可能感兴趣的:(C# DataGridView合计行完整解决方法)