是否可以将DataGridView
的最后一行作为列的总和,并且最后一行始终显示/被冻结?
答案 0 :(得分:2)
解决方案实际上非常简单,只需要你在框外思考一下。
通常,一旦数据加载到网格视图中,底部就会出现一条深灰色的行:
您可以利用此空间。您需要做的就是将一些标签拖到您的表单上,放在网格视图中,并应用背景颜色:
在您的代码中,添加如下方法:
void UpdateTotal(Label Label, int Number)
{
// Called from another thread; facilitate safe cross-thread operation
if(this.InvokeRequired)
this.Invoke(new Action<Label, int>(UpdateTotal), new object[] {Label, Number});
// Called from this thread or invoked
else
// Format the number with a thousands separator
Label.Text = Number.ToString("N0");
}
然后,从更新网格视图的任何地方,使用标签名称和您计算的总和(或在方法中计算)来调用UpdateTotal(labelPostsAffected, 2000);
。
结果是这样的:
答案 1 :(得分:0)
是的,这是可能的。 首先,您必须遍历网格并计算所需列的总和 计算总和后,您必须创建一个新的DataGridRow并用计算值填充它,将DataGridRow的Frozen属性设置为True,然后将新的DataGridRow添加到Datagridview。 Sum Column Values in DataGridView
您可以在数据源上添加一个带有求和值的新行,然后找到DataGrid上的最后一行,并将该行的属性设置为Frozen = True
,而不是创建新的DataGridRow。答案 2 :(得分:-3)
要执行此操作,您必须设置 True 的 ShowFooter 属性
然后在代码后面在页脚中添加你的欲望值
<asp:GridView ID="grdList" runat="server" ShowFooter="True" >
// other part of gridview codes e.g columns or blah blah blah
</asp:GridView>
// in code-behind
int totalValue = 2 * 10;
grdList.Columns[2].FooterText = totalValue.ToString();