asp.net - 在 Gridview 中为一列添加汇总行

标签 asp.net gridview

我有这个 GridView,我想添加 PremiseScore 分数的页脚总和(第三列)。

我怎样才能做到这一点?

            <asp:BoundField DataField="PremiseUno" HeaderText='<%$ Resources:Language, grdPremiseUno %>' ReadOnly="True" SortExpression="PremiseUno"  >
                        <HeaderStyle CssClass="gHeaderStyle" />
                        <ItemStyle CssClass="gControlStyle" />
                        </asp:BoundField>

                         <asp:BoundField DataField="PremiseName" HeaderText='<%$ Resources:Language, grdPremisesName %>'
                            ReadOnly="True" SortExpression="grdPremisesName" >
                            <HeaderStyle CssClass="gHeaderStyle" />
                        <ItemStyle CssClass="gControlStyle" />
                        </asp:BoundField>

                        <asp:BoundField DataField="PremiseScore" HeaderText='<%$ Resources:Language, grdPremiseScore %>' ReadOnly="True" SortExpression="PremiseScore"  >
                        <HeaderStyle CssClass="gHeaderStyle" />
                        <ItemStyle CssClass="gControlStyle" />
                        </asp:BoundField>

                <asp:TemplateField ShowHeader="False" HeaderText= '<%$ Resources:Language, btnDelete %>'>
                    <ItemTemplate>
                        <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" 
                            CommandName="Delete" Text="Delete" CommandArgument='<%# Eval("PremiseUno") %>'  onclick="LinkButton1_Click"></asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>



            </Columns>

最佳答案

如果将绑定(bind)字段转换为模板字段,则可以访问保存前提分数值的控件:

<asp:TemplateField HeaderText="test">
     <ItemTemplate>
         <asp:Label runat="server" ID="testLabel" Text='<%# Eval("PremiseScore") %>'></asp:Label>
     </ItemTemplate>               
</asp:TemplateField>

然后,您可以执行以下操作来计算 GridView 的数据绑定(bind)事件中的总和:

protected void Grid_DataBound(Object sender, EventArgs e)
{
    GridViewRow footerRow = grid.FooterRow;
    var sum = (from GridViewRow row in grid.Rows select ((Label)row.FindControl("testLabel")).Text).Sum(d => Convert.ToInt16(d));

    footerRow.Cells[0].Text = sum.ToString();
}

我在这里假设所有值都是整数,但它很容易转换为其他值类型。

关于asp.net - 在 Gridview 中为一列添加汇总行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9602972/

相关文章:

c# - 当同一 Gridview 中的下拉菜单上选定的索引发生更改时,在 Gridview 中绑定(bind)下拉菜单

c# - 修改 Gridview 中的超链接字段文本

ASP.NET AJAX - 通过 JavaScript 检查异步回发

c# - 计算选中复选框的数量

c# - gridrow 删除事件导致无限循环?

c# - 使用 x :Bind 设置 GridView 项目源的 UWP 问题

c# - 在 PostBack 之后保持 gridview 中 div 的滚动条位置

asp.net - 回发后 GridView 未正确重新绑定(bind)

javascript - 回发后如何显示成功和错误消息?

c# - 无法检查 DataList 页脚模板中的 RadioButton