我正在开发一个winform应用程序。我想在每列的最后一行显示列的总和。此行必须始终可见。
我正考虑在datagridview下面添加另一个datagridview和记录,并在底部datagridview中显示总和。
如果有更好的方法来完成这项任务?
答案 0 :(得分:3)
不,需要添加另一个datagridview
解决方案1:请参阅this solution
解决方案2:如果上述链接不是您想要的,那么
您可以尝试手动添加最后一个摘要行,您可以在其中显示所需的信息。例如,您可以尝试执行以下操作:
- 从数据库中读取数据并填写System.Data.DataTable
- 向新创建的DataTable添加一列 - 可以设置该列 对于最后一个,摘要,行
为真- 以编程方式添加一个包含合适摘要数据的额外行
- 将数据绑定到DataGridView控件
- 使用适当的事件,粗体或其他图形不同的摘要 row(具有额外列值的行) 设置为true)
醇>
答案 1 :(得分:1)
答案 2 :(得分:0)
即使这个问题很老,我也想提出延伸到Niraj Doshis的答案。他的回答适用于数据绑定DataGridView。我最近遇到了在用户可编辑的DataGridView中计算摘要的问题,其解决方案的细节不同。无论如何,它也非常直截了当。我正在更高的抽象级别编写我的函数,它概述了工作流程,但忽略了实现细节。
首先,您必须初始化DataGridView,请参阅
private void InitializeDataGridView()
{
SetColumnTypes();
AddEmptyRow();
AddSummaryRow();
}
我将DataGridView.AllowUsersToAddRows
设置为false
,因为新行位于摘要行的下方。因此,我添加了一个空行,用户可以填写他的数据。摘要行设置为ReadOnly,因为我们不希望用户编辑它。每当引发CellEndEdit时,我都会使用以下方法更新DataGridView
private void UpdateDataGridView()
{
RemoveSummaryRow();
RemoveEmptyRows();
UpdateRowNumbers();
AddEmptyRow();
AddSummaryRow();
}
首先,我删除摘要和所有空行(您必须小心。如果您要删除刚编辑的行,则会抛出异常。我还没弄明白要做到这一点,但我刚刚制定了解决方案。当我提出解决方案时,我会进行修改。)之后我在每一行中设置一个运行编号。这不是真正需要的,而是我实现的细节。最后,我再次添加一个空行,用户可以使用该行添加更多数据,然后计算并添加摘要行。
正如我之前所说,这还不是一个现成的解决方案,而是我的概念可行,但有一些怪癖和错误。
答案 3 :(得分:0)