DataGridView合计行,与合并行的三个单元格

yanele 2011-01-25 04:22:51
DataGridView绑定定了数据源,在最底部添加了合计行。

1、最后一行合计怎么让其始终显示在最下面,现在排序会将其排到第一行去,该怎么处理?
2、“合计”二字想在最后一行第1,2,3列合并,且居中显示,不知道行不行?并控制这3列不能拖动顺序或其他列不能拖到这3列之间?
...全文
394 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanele 2011-01-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wuyq11 的回复:]
DataGridView
[/Quote]
我看你的方法是用VB写的吧,我是用C#写的程序。
wuyq11 2011-01-25
  • 打赏
  • 举报
回复
yanele 2011-01-25
  • 打赏
  • 举报
回复
4楼,我就是采用的这种方添加的合计行,我现在需要:

1、最后一行合计怎么让其始终显示在最下面,现在排序会将其排到第一行去,该怎么处理?
2、“合计”二字想在最后一行第1,2,3列合并,且居中显示,不知道行不行?并控制这3列不能拖动顺序或其他列不能拖到这3列之间?
ajq1989 2011-01-25
  • 打赏
  • 举报
回复

using System;
using System.Collections.Generic;
using System.Collections;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication6
{
public class FormHelper
{
#region 添加一行
public void AddRow(DataGridView dg, string value)
{
if (dg.Rows.Count > 1)
{
DelRow(dg, dg.Rows.Count - 1);
}
dg.Rows.Add();
for (int i = 0; i < dg.Columns.Count; i++)
{
dg.Rows[dg.Rows.Count - 1].Cells[i].Value = value;
}
dg.CurrentCell = dg.Rows[dg.Rows.Count - 1].Cells[0];
TotalRow(dg);
}
#endregion
#region 编辑一行
public void EditRow(DataGridView dg)
{
DelRow(dg, dg.Rows.Count - 1);
TotalRow(dg);
}
#endregion
#region 删除一行
public void DelRow(DataGridView dg,int index)
{
dg.Rows.Remove(dg.Rows[index]);
}
#endregion
#region 合计行
public void TotalRow(DataGridView dg)
{
dg.Rows.Add();
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[3].Value = Convert.ToSingle(dgr.Cells[3].Value) + Convert.ToSingle(dg.Rows[i].Cells[3].Value);
}
}
#endregion
}
}

yanele 2011-01-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cszyf 的回复:]
分开写。。。DataGridView中只统计每条数据,,最后用个div或table制作显示合计。DataGridView里使用某一种标签如Label绑定需要统计的数据,给Label附上Name属性或Class属性或不附,,反正给个标记属性或直接通过Label,通过JQUERY来查找获取数值,然后统计。OK了啊,至于统计合并几个那就全看你怎么根据
DataGridView的样式div出一个不就行了……
[/Quote]

你的方法,在网上见过,但拖动列宽时,显示不太好。
cszyf 2011-01-25
  • 打赏
  • 举报
回复
分开写。。。DataGridView中只统计每条数据,,最后用个div或table制作显示合计。DataGridView里使用某一种标签如Label绑定需要统计的数据,给Label附上Name属性或Class属性或不附,,反正给个标记属性或直接通过Label,通过JQUERY来查找获取数值,然后统计。OK了啊,至于统计合并几个那就全看你怎么根据
DataGridView的样式div出一个不就行了、、
*调整导出及打印的格式与显示一致;合计,详细参见第10条修正功能,全部源码及示例。 * 文 件 名:DataGridViewEx.cs * 创 建 人:明振居士 * Email:nzj.163@163.com qq:342155124 * 创建时间:2010-06-01 * 最后修改时间:2012-1-19 增加第10条所示的功能;修改了列头超过26列的错误,导出excel为数组方式,速度更快,导出的单元格设置为文本格式。 * 标 题:用户自定义的DataGridView控件 * 功能描述:扩展DataGridView控件功能 * 扩展功能: * 1、搜索Search(); 有两个同明方法,参数不同 F3为快捷键继续向下搜索 * 2、用TreeView HeadSource 来设置复杂的标题样式,如果某个节点对应的显示列隐藏,请将该节点Tag设置为hide,隐藏列的排列位置与绑定数据元列位置对应,树叶节点的顺序需要与结果集的列顺序一致 * 3、通过反射导出Excel,无需引用com组件,方法ExportExcel() ,不受列数的限制,表头同样可以导出,AutoFit属性设置导出excel后是否自动调整单元格宽度 * 导出内容支持自定义的:Title List Header List Footer,支持在设计时值的设定,窗口关闭时Excel资源自动彻底释放 * 4、可以自己任意设定那些列显示及不显示,通过调用方法SetColumnVisible()实现。 * 5、设置列标题SetHeader(),设置列永远可见AlwaysShowCols(),设置列暂时不可见HideCols() * 注意,当使用了TreeView作为复杂Header时,不要使用本方法,Header显示的内容根据treeview内容而显示 * 6、列宽度及顺序的保存SaveGridView(),加载LoadGridView() * 7、支持所见即所得的打印功能,举例如下 * private void button5_Click(object sender, EventArgs e) { DGVPrinter printer = new DGVPrinter(); printer.PrintPreviewDataGridView(DataGridViewEx1); } * 8、自定义合并与列,合并用 MergeRowColumn 属性,列合并用MergeColumnNames属性,都可以定义多个列 * 9、标号的设置 bool ShowRowNumber; * 10、增加最后一的汇总,支持列的聚合函数,参见http://msdn.microsoft.com/zh-cn/library/system.data.datacolumn.[removed]v=VS.100).aspx * 假设对id列显示“合计”字符,avgPrice进平均值,total列显示合计,则对ComputeColumns增加三内容:id,合计:;avgPrice,Avg(avgPrice);total,Sum(total) * 如果需要对值进格式控制,请实现beforeShow事件 * 增加了导出和打印对应的支持,所见即所得的对齐方应用于式导出及打印。

111,095

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧