冻结的最后一行DataGridView作为列的总和?

时间:2010-03-06 07:05:19

标签: c# .net winforms datagridview

是否可以将DataGridView的最后一行作为列的总和,并且最后一行始终显示/被冻结?

3 个答案:

答案 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();